mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-25 12:56:59 +01:00
More dead code
This commit is contained in:
parent
88f7c29254
commit
b5fad7ebda
@ -1,320 +0,0 @@
|
|||||||
/*
|
|
||||||
* C64_x.h - Put the pieces together, X specific stuff
|
|
||||||
*
|
|
||||||
* Frodo (C) 1994-1997,2002-2004 Christian Bauer
|
|
||||||
*
|
|
||||||
* 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 "main.h"
|
|
||||||
|
|
||||||
|
|
||||||
static struct timeval tv_start;
|
|
||||||
|
|
||||||
#ifndef HAVE_USLEEP
|
|
||||||
/*
|
|
||||||
* NAME:
|
|
||||||
* usleep -- This is the precision timer for Test Set
|
|
||||||
* Automation. It uses the select(2) system
|
|
||||||
* call to delay for the desired number of
|
|
||||||
* micro-seconds. This call returns ZERO
|
|
||||||
* (which is usually ignored) on successful
|
|
||||||
* completion, -1 otherwise.
|
|
||||||
*
|
|
||||||
* ALGORITHM:
|
|
||||||
* 1) We range check the passed in microseconds and log a
|
|
||||||
* warning message if appropriate. We then return without
|
|
||||||
* delay, flagging an error.
|
|
||||||
* 2) Load the Seconds and micro-seconds portion of the
|
|
||||||
* interval timer structure.
|
|
||||||
* 3) Call select(2) with no file descriptors set, just the
|
|
||||||
* timer, this results in either delaying the proper
|
|
||||||
* ammount of time or being interupted early by a signal.
|
|
||||||
*
|
|
||||||
* HISTORY:
|
|
||||||
* Added when the need for a subsecond timer was evident.
|
|
||||||
*
|
|
||||||
* AUTHOR:
|
|
||||||
* Michael J. Dyer Telephone: AT&T 414.647.4044
|
|
||||||
* General Electric Medical Systems GE DialComm 8 *767.4044
|
|
||||||
* P.O. Box 414 Mail Stop 12-27 Sect'y AT&T 414.647.4584
|
|
||||||
* Milwaukee, Wisconsin USA 53201 8 *767.4584
|
|
||||||
* internet: mike@sherlock.med.ge.com GEMS WIZARD e-mail: DYER
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
int usleep(unsigned long int microSeconds)
|
|
||||||
{
|
|
||||||
unsigned int Seconds, uSec;
|
|
||||||
int nfds, readfds, writefds, exceptfds;
|
|
||||||
struct timeval Timer;
|
|
||||||
|
|
||||||
nfds = readfds = writefds = exceptfds = 0;
|
|
||||||
|
|
||||||
if( (microSeconds == (unsigned long) 0)
|
|
||||||
|| microSeconds > (unsigned long) 4000000 )
|
|
||||||
{
|
|
||||||
errno = ERANGE; /* value out of range */
|
|
||||||
perror( "usleep time out of range ( 0 -> 4000000 ) " );
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
Seconds = microSeconds / (unsigned long) 1000000;
|
|
||||||
uSec = microSeconds % (unsigned long) 1000000;
|
|
||||||
|
|
||||||
Timer.tv_sec = Seconds;
|
|
||||||
Timer.tv_usec = uSec;
|
|
||||||
|
|
||||||
if( select( nfds, &readfds, &writefds, &exceptfds, &Timer ) < 0 )
|
|
||||||
{
|
|
||||||
perror( "usleep (select) failed" );
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
// select() timing is much more accurate under Linux
|
|
||||||
static void Delay_usec(unsigned long usec)
|
|
||||||
{
|
|
||||||
int was_error;
|
|
||||||
struct timeval tv;
|
|
||||||
|
|
||||||
tv.tv_sec = 0;
|
|
||||||
tv.tv_usec = usec;
|
|
||||||
do {
|
|
||||||
errno = 0;
|
|
||||||
was_error = select(0, NULL, NULL, NULL, &tv);
|
|
||||||
} while (was_error && (errno == EINTR));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static void Delay_usec(unsigned long usec)
|
|
||||||
{
|
|
||||||
usleep(usec);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Constructor, system-dependent things
|
|
||||||
*/
|
|
||||||
|
|
||||||
void C64::c64_ctor1(void)
|
|
||||||
{
|
|
||||||
// Initialize joystick variables
|
|
||||||
joy_minx[0] = joy_miny[0] = 32767;
|
|
||||||
joy_maxx[0] = joy_maxy[0] = -32768;
|
|
||||||
joy_minx[1] = joy_miny[1] = 32767;
|
|
||||||
joy_maxx[1] = joy_maxy[1] = -32768;
|
|
||||||
}
|
|
||||||
|
|
||||||
void C64::c64_ctor2(void)
|
|
||||||
{
|
|
||||||
gettimeofday(&tv_start, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Destructor, system-dependent things
|
|
||||||
*/
|
|
||||||
|
|
||||||
void C64::c64_dtor(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Start main emulation thread
|
|
||||||
*/
|
|
||||||
|
|
||||||
void C64::Run(void)
|
|
||||||
{
|
|
||||||
// Reset chips
|
|
||||||
TheCPU->Reset();
|
|
||||||
TheSID->Reset();
|
|
||||||
TheCIA1->Reset();
|
|
||||||
TheCIA2->Reset();
|
|
||||||
TheCPU1541->Reset();
|
|
||||||
|
|
||||||
// Patch kernal IEC routines
|
|
||||||
orig_kernal_1d84 = Kernal[0x1d84];
|
|
||||||
orig_kernal_1d85 = Kernal[0x1d85];
|
|
||||||
PatchKernal(ThePrefs.FastReset, ThePrefs.Emul1541Proc);
|
|
||||||
|
|
||||||
quit_thyself = false;
|
|
||||||
thread_func();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Vertical blank: Poll keyboard and joysticks, update window
|
|
||||||
*/
|
|
||||||
|
|
||||||
void C64::VBlank(bool draw_frame)
|
|
||||||
{
|
|
||||||
// Poll keyboard
|
|
||||||
TheDisplay->PollKeyboard(TheCIA1->KeyMatrix, TheCIA1->RevMatrix, &joykey);
|
|
||||||
if (TheDisplay->quit_requested)
|
|
||||||
quit_thyself = true;
|
|
||||||
|
|
||||||
// Poll joysticks
|
|
||||||
TheCIA1->Joystick1 = poll_joystick(0);
|
|
||||||
TheCIA1->Joystick2 = poll_joystick(1);
|
|
||||||
|
|
||||||
if (ThePrefs.JoystickSwap) {
|
|
||||||
uint8 tmp = TheCIA1->Joystick1;
|
|
||||||
TheCIA1->Joystick1 = TheCIA1->Joystick2;
|
|
||||||
TheCIA1->Joystick2 = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Joystick keyboard emulation
|
|
||||||
if (TheDisplay->NumLock())
|
|
||||||
TheCIA1->Joystick1 &= joykey;
|
|
||||||
else
|
|
||||||
TheCIA1->Joystick2 &= joykey;
|
|
||||||
|
|
||||||
// Count TOD clocks
|
|
||||||
TheCIA1->CountTOD();
|
|
||||||
TheCIA2->CountTOD();
|
|
||||||
|
|
||||||
// Update window if needed
|
|
||||||
if (draw_frame) {
|
|
||||||
TheDisplay->Update();
|
|
||||||
|
|
||||||
// Calculate time between VBlanks, display speedometer
|
|
||||||
struct timeval tv;
|
|
||||||
gettimeofday(&tv, NULL);
|
|
||||||
if ((tv.tv_usec -= tv_start.tv_usec) < 0) {
|
|
||||||
tv.tv_usec += 1000000;
|
|
||||||
tv.tv_sec -= 1;
|
|
||||||
}
|
|
||||||
tv.tv_sec -= tv_start.tv_sec;
|
|
||||||
double elapsed_time = (double)tv.tv_sec * 1000000 + tv.tv_usec;
|
|
||||||
speed_index = 20000 / (elapsed_time + 1) * ThePrefs.SkipFrames * 100;
|
|
||||||
|
|
||||||
// Limit speed to 100% if desired
|
|
||||||
if ((speed_index > 100) && ThePrefs.LimitSpeed) {
|
|
||||||
Delay_usec((unsigned long)(ThePrefs.SkipFrames * 20000 - elapsed_time));
|
|
||||||
speed_index = 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
gettimeofday(&tv_start, NULL);
|
|
||||||
|
|
||||||
TheDisplay->Speedometer((int)speed_index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The emulation's main loop
|
|
||||||
*/
|
|
||||||
|
|
||||||
void C64::thread_func(void)
|
|
||||||
{
|
|
||||||
int linecnt = 0;
|
|
||||||
|
|
||||||
#ifdef FRODO_SC
|
|
||||||
while (!quit_thyself) {
|
|
||||||
|
|
||||||
// The order of calls is important here
|
|
||||||
if (TheVIC->EmulateCycle())
|
|
||||||
TheSID->EmulateLine();
|
|
||||||
TheCIA1->CheckIRQs();
|
|
||||||
TheCIA2->CheckIRQs();
|
|
||||||
TheCIA1->EmulateCycle();
|
|
||||||
TheCIA2->EmulateCycle();
|
|
||||||
TheCPU->EmulateCycle();
|
|
||||||
|
|
||||||
if (ThePrefs.Emul1541Proc) {
|
|
||||||
TheCPU1541->CountVIATimers(1);
|
|
||||||
if (!TheCPU1541->Idle)
|
|
||||||
TheCPU1541->EmulateCycle();
|
|
||||||
}
|
|
||||||
CycleCounter++;
|
|
||||||
#else
|
|
||||||
while (!quit_thyself) {
|
|
||||||
|
|
||||||
// The order of calls is important here
|
|
||||||
int cycles = TheVIC->EmulateLine();
|
|
||||||
TheSID->EmulateLine();
|
|
||||||
#if !PRECISE_CIA_CYCLES
|
|
||||||
TheCIA1->EmulateLine(ThePrefs.CIACycles);
|
|
||||||
TheCIA2->EmulateLine(ThePrefs.CIACycles);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ThePrefs.Emul1541Proc) {
|
|
||||||
int cycles_1541 = ThePrefs.FloppyCycles;
|
|
||||||
TheCPU1541->CountVIATimers(cycles_1541);
|
|
||||||
|
|
||||||
if (!TheCPU1541->Idle) {
|
|
||||||
// 1541 processor active, alternately execute
|
|
||||||
// 6502 and 6510 instructions until both have
|
|
||||||
// used up their cycles
|
|
||||||
while (cycles >= 0 || cycles_1541 >= 0)
|
|
||||||
if (cycles > cycles_1541)
|
|
||||||
cycles -= TheCPU->EmulateLine(1);
|
|
||||||
else
|
|
||||||
cycles_1541 -= TheCPU1541->EmulateLine(1);
|
|
||||||
} else
|
|
||||||
TheCPU->EmulateLine(cycles);
|
|
||||||
} else
|
|
||||||
// 1541 processor disabled, only emulate 6510
|
|
||||||
TheCPU->EmulateLine(cycles);
|
|
||||||
#endif
|
|
||||||
linecnt++;
|
|
||||||
#if !defined(__svgalib__)
|
|
||||||
if ((linecnt & 0xfff) == 0 && gui) {
|
|
||||||
|
|
||||||
// check for command from GUI process
|
|
||||||
// fprintf(stderr,":");
|
|
||||||
while (gui->probe()) {
|
|
||||||
char c;
|
|
||||||
if (gui->eread(&c, 1) != 1) {
|
|
||||||
delete gui;
|
|
||||||
gui = 0;
|
|
||||||
fprintf(stderr,"Oops, GUI process died...\n");
|
|
||||||
} else {
|
|
||||||
// fprintf(stderr,"%c",c);
|
|
||||||
switch (c) {
|
|
||||||
case 'q':
|
|
||||||
quit_thyself = true;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
Reset();
|
|
||||||
break;
|
|
||||||
case 'p':{
|
|
||||||
Prefs *np = Frodo::reload_prefs();
|
|
||||||
NewPrefs(np);
|
|
||||||
ThePrefs = *np;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,250 +0,0 @@
|
|||||||
/*
|
|
||||||
* Prefs_glade.h - Global preferences, Glade/Gnome/Gtk+ specific stuff
|
|
||||||
*
|
|
||||||
* Frodo (C) 1994-1997,2002-2005 Christian Bauer
|
|
||||||
*
|
|
||||||
* 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 <gnome.h>
|
|
||||||
#include <glade/glade.h>
|
|
||||||
|
|
||||||
#include <SDL.h>
|
|
||||||
|
|
||||||
|
|
||||||
// Glade XML tree
|
|
||||||
static GladeXML *xml = NULL;
|
|
||||||
|
|
||||||
// Result of ShowEditor()
|
|
||||||
static bool result = false;
|
|
||||||
|
|
||||||
// Pointer to preferences being edited
|
|
||||||
static Prefs *prefs = NULL;
|
|
||||||
|
|
||||||
// Prefs file name
|
|
||||||
static char *prefs_path = NULL;
|
|
||||||
|
|
||||||
// Prototypes
|
|
||||||
static void set_values();
|
|
||||||
static void get_values();
|
|
||||||
static void ghost_widgets();
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Show preferences editor (synchronously)
|
|
||||||
* prefs_name points to the file name of the preferences (which may be changed)
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool Prefs::ShowEditor(bool startup, char *path)
|
|
||||||
{
|
|
||||||
prefs = this;
|
|
||||||
prefs_path = path;
|
|
||||||
|
|
||||||
// Load XML user interface file on startup
|
|
||||||
if (startup) {
|
|
||||||
xml = glade_xml_new(DATADIR "Frodo.glade", NULL, NULL);
|
|
||||||
if (xml) {
|
|
||||||
glade_xml_signal_autoconnect(xml);
|
|
||||||
set_values();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// No XML means no prefs editor
|
|
||||||
if (!xml)
|
|
||||||
return startup;
|
|
||||||
|
|
||||||
// Run editor
|
|
||||||
result = false;
|
|
||||||
gtk_main();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set the values of the widgets
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void create_joystick_menu(const char *widget_name)
|
|
||||||
{
|
|
||||||
GtkWidget *w = glade_xml_get_widget(xml, widget_name);
|
|
||||||
gtk_option_menu_remove_menu(GTK_OPTION_MENU(w));
|
|
||||||
|
|
||||||
GtkWidget *menu = gtk_menu_new();
|
|
||||||
|
|
||||||
for (int i = -1; i < SDL_NumJoysticks(); ++i) {
|
|
||||||
GtkWidget *item = gtk_menu_item_new_with_label(i < 0 ? "None" : SDL_JoystickName(i));
|
|
||||||
gtk_widget_show(item);
|
|
||||||
gtk_menu_append(GTK_MENU(menu), item);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(w), menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void set_values()
|
|
||||||
{
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "emul1541_proc")), prefs->Emul1541Proc);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "map_slash")), prefs->MapSlash);
|
|
||||||
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(glade_xml_get_widget(xml, "drive8_path")))), prefs->DrivePath[0]);
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(glade_xml_get_widget(xml, "drive9_path")))), prefs->DrivePath[1]);
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(glade_xml_get_widget(xml, "drive10_path")))), prefs->DrivePath[2]);
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(glade_xml_get_widget(xml, "drive11_path")))), prefs->DrivePath[3]);
|
|
||||||
|
|
||||||
gtk_option_menu_set_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "display_type")), prefs->DisplayType);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sprites_on")), prefs->SpritesOn);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sprite_collisions")), prefs->SpriteCollisions);
|
|
||||||
|
|
||||||
gtk_option_menu_set_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "sid_type")), prefs->SIDType);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sid_filters")), prefs->SIDFilters);
|
|
||||||
|
|
||||||
create_joystick_menu("joystick1_port");
|
|
||||||
create_joystick_menu("joystick2_port");
|
|
||||||
|
|
||||||
gtk_option_menu_set_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "joystick1_port")), prefs->Joystick1Port);
|
|
||||||
gtk_option_menu_set_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "joystick2_port")), prefs->Joystick2Port);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "joystick_swap")), prefs->JoystickSwap);
|
|
||||||
|
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "skip_frames")), prefs->SkipFrames);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "limit_speed")), prefs->LimitSpeed);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "fast_reset")), prefs->FastReset);
|
|
||||||
|
|
||||||
gtk_option_menu_set_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "reu_size")), prefs->REUSize);
|
|
||||||
|
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "normal_cycles")), prefs->NormalCycles);
|
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "bad_line_cycles")), prefs->BadLineCycles);
|
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "cia_cycles")), prefs->CIACycles);
|
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "floppy_cycles")), prefs->FloppyCycles);
|
|
||||||
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "cia_irq_hack")), prefs->CIAIRQHack);
|
|
||||||
|
|
||||||
ghost_widgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the values of the widgets
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void get_drive_path(int num, const char *widget_name)
|
|
||||||
{
|
|
||||||
prefs->DrivePath[num][0] = 0;
|
|
||||||
const char *path = gnome_file_entry_get_full_path(GNOME_FILE_ENTRY(glade_xml_get_widget(xml, widget_name)), false);
|
|
||||||
if (path)
|
|
||||||
strncpy(prefs->DrivePath[num], path, 255);
|
|
||||||
prefs->DrivePath[num][255] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void get_values()
|
|
||||||
{
|
|
||||||
prefs->Emul1541Proc = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "emul1541_proc")));
|
|
||||||
prefs->MapSlash = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "map_slash")));
|
|
||||||
|
|
||||||
get_drive_path(0, "drive8_path");
|
|
||||||
get_drive_path(1, "drive9_path");
|
|
||||||
get_drive_path(2, "drive10_path");
|
|
||||||
get_drive_path(3, "drive11_path");
|
|
||||||
|
|
||||||
prefs->DisplayType = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "display_type")));
|
|
||||||
prefs->SpritesOn = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sprites_on")));
|
|
||||||
prefs->SpriteCollisions = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sprite_collisions")));
|
|
||||||
|
|
||||||
prefs->SIDType = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "sid_type")));
|
|
||||||
prefs->SIDFilters = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sid_filters")));
|
|
||||||
|
|
||||||
prefs->Joystick1Port = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "joystick1_port")));
|
|
||||||
prefs->Joystick2Port = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "joystick2_port")));
|
|
||||||
prefs->JoystickSwap = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "joystick_swap")));
|
|
||||||
|
|
||||||
prefs->SkipFrames = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "skip_frames")));
|
|
||||||
prefs->LimitSpeed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "limit_speed")));
|
|
||||||
prefs->FastReset = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "fast_reset")));
|
|
||||||
|
|
||||||
prefs->REUSize = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "reu_size")));
|
|
||||||
|
|
||||||
prefs->NormalCycles = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "normal_cycles")));
|
|
||||||
prefs->BadLineCycles = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "bad_line_cycles")));
|
|
||||||
prefs->CIACycles = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "cia_cycles")));
|
|
||||||
prefs->FloppyCycles = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "floppy_cycles")));
|
|
||||||
|
|
||||||
prefs->CIAIRQHack = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "cia_irq_hack")));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Ghost/unghost widgets
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void ghost_widget(const char *name, bool ghosted)
|
|
||||||
{
|
|
||||||
gtk_widget_set_sensitive(glade_xml_get_widget(xml, name), !ghosted);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ghost_widgets()
|
|
||||||
{
|
|
||||||
ghost_widget("drive9_path", prefs->Emul1541Proc);
|
|
||||||
ghost_widget("drive10_path", prefs->Emul1541Proc);
|
|
||||||
ghost_widget("drive11_path", prefs->Emul1541Proc);
|
|
||||||
|
|
||||||
ghost_widget("sid_filters", prefs->SIDType != SIDTYPE_DIGITAL);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "sid_filters")), prefs->SIDType == SIDTYPE_DIGITAL ? prefs->SIDFilters : (prefs->SIDType == SIDTYPE_SIDCARD ? true : false));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal handlers
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern "C" gboolean on_prefs_win_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_ok_clicked(GtkButton *button, gpointer user_data)
|
|
||||||
{
|
|
||||||
result = true;
|
|
||||||
get_values();
|
|
||||||
prefs->Save(prefs_path);
|
|
||||||
gtk_main_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_quit_clicked(GtkButton *button, gpointer user_data)
|
|
||||||
{
|
|
||||||
result = false;
|
|
||||||
gtk_main_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_about_activate(GtkMenuItem *menuitem, gpointer user_data)
|
|
||||||
{
|
|
||||||
GladeXML *about_xml = glade_xml_new(DATADIR "Frodo.glade", "about_win", NULL);
|
|
||||||
if (about_xml)
|
|
||||||
gtk_widget_show(glade_xml_get_widget(about_xml, "about_win"));
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_emul1541_proc_toggled(GtkToggleButton *button, gpointer user_data)
|
|
||||||
{
|
|
||||||
prefs->Emul1541Proc = gtk_toggle_button_get_active(button);
|
|
||||||
ghost_widgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_sid_type_activate(GtkMenuItem *menuitem, gpointer user_data)
|
|
||||||
{
|
|
||||||
prefs->SIDType = gtk_option_menu_get_history(GTK_OPTION_MENU(glade_xml_get_widget(xml, "sid_type")));
|
|
||||||
ghost_widgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void on_sid_filters_toggled(GtkToggleButton *button, gpointer user_data)
|
|
||||||
{
|
|
||||||
prefs->SIDFilters = gtk_toggle_button_get_active(button);
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user