From 479a987b8626c9ba3c700f95db16b1f3fbe8cc7e Mon Sep 17 00:00:00 2001 From: stephena Date: Wed, 5 Apr 2006 12:28:39 +0000 Subject: [PATCH] Fixed remaining debugger font issues (hopefully), and added GUI slider for adjusting analog paddle threshold (used to eliminate jitter). git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1079 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- stella/src/debugger/gui/TiaWidget.cxx | 10 ++++----- stella/src/emucore/EventHandler.cxx | 13 ++++++++--- stella/src/emucore/EventHandler.hxx | 13 +++++++++-- stella/src/emucore/Settings.cxx | 8 ++++++- stella/src/gui/InputDialog.cxx | 32 ++++++++++++++++++++++++--- stella/src/gui/InputDialog.hxx | 4 +++- stella/src/gui/OptionsDialog.cxx | 4 ++-- 7 files changed, 67 insertions(+), 17 deletions(-) diff --git a/stella/src/debugger/gui/TiaWidget.cxx b/stella/src/debugger/gui/TiaWidget.cxx index d7d406112..0d9431b73 100644 --- a/stella/src/debugger/gui/TiaWidget.cxx +++ b/stella/src/debugger/gui/TiaWidget.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: TiaWidget.cxx,v 1.3 2006-03-25 00:34:17 stephena Exp $ +// $Id: TiaWidget.cxx,v 1.4 2006-04-05 12:28:37 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -476,7 +476,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& font, // M1 register info //////////////////////////// // enaM1 - xpos = 10; ypos += 2*lineHeight; + xpos = 10; ypos += lineHeight + 6; t = new StaticTextWidget(boss, font, xpos, ypos+2, 3*fontWidth, fontHeight, "M1:", kTextAlignLeft); xpos += 3*fontWidth + 8; @@ -531,7 +531,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& font, // BL register info //////////////////////////// // enaBL - xpos = 10; ypos += 2*lineHeight; + xpos = 10; ypos += lineHeight + 6; t = new StaticTextWidget(boss, font, xpos, ypos+2, 3*fontWidth, fontHeight, "BL:", kTextAlignLeft); xpos += 3*fontWidth + 8; @@ -586,7 +586,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& font, // PF 0/1/2 registers //////////////////////////// // PF0 - xpos = 10; ypos += 2*lineHeight; + xpos = 10; ypos += lineHeight + 6; t = new StaticTextWidget(boss, font, xpos, ypos+2, 4*fontWidth, fontHeight, "PF:", kTextAlignLeft); xpos += 4*fontWidth; @@ -610,7 +610,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& font, addFocusWidget(myPF[2]); // PF reflect, score, priority - xpos = 10 + 4*fontWidth; ypos += lineHeight + 2; + xpos = 10 + 4*fontWidth; ypos += lineHeight + 6; myRefPF = new CheckboxWidget(boss, font, xpos, ypos+1, "Reflect", kCheckActionCmd); myRefPF->setTarget(this); diff --git a/stella/src/emucore/EventHandler.cxx b/stella/src/emucore/EventHandler.cxx index 928e19e19..c8d939e7e 100644 --- a/stella/src/emucore/EventHandler.cxx +++ b/stella/src/emucore/EventHandler.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: EventHandler.cxx,v 1.159 2006-03-27 21:06:44 stephena Exp $ +// $Id: EventHandler.cxx,v 1.160 2006-04-05 12:28:37 stephena Exp $ //============================================================================ #include @@ -132,10 +132,9 @@ EventHandler::EventHandler(OSystem* osystem) myGrabMouseFlag = myOSystem->settings().getBool("grabmouse"); setPaddleMode(myOSystem->settings().getInt("paddle"), false); + setPaddleThreshold(myOSystem->settings().getInt("pthresh")); myFryingFlag = false; - - myPaddleThreshold = myOSystem->settings().getInt("pthresh"); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2043,6 +2042,14 @@ void EventHandler::setPaddleSpeed(int num, int speed) myOSystem->settings().setInt(buf.str(), speed); } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void EventHandler::setPaddleThreshold(int thresh) +{ + myPaddleThreshold = thresh; + myOSystem->settings().setInt("pthresh", thresh); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventHandler::enterMenuMode(State state) { diff --git a/stella/src/emucore/EventHandler.hxx b/stella/src/emucore/EventHandler.hxx index 2025b0ee0..33ee7e69b 100644 --- a/stella/src/emucore/EventHandler.hxx +++ b/stella/src/emucore/EventHandler.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: EventHandler.hxx,v 1.84 2006-03-27 21:06:44 stephena Exp $ +// $Id: EventHandler.hxx,v 1.85 2006-04-05 12:28:37 stephena Exp $ //============================================================================ #ifndef EVENTHANDLER_HXX @@ -107,7 +107,7 @@ struct JoyMouse { mapping can take place. @author Stephen Anthony - @version $Id: EventHandler.hxx,v 1.84 2006-03-27 21:06:44 stephena Exp $ + @version $Id: EventHandler.hxx,v 1.85 2006-04-05 12:28:37 stephena Exp $ */ class EventHandler { @@ -260,6 +260,15 @@ class EventHandler */ void setPaddleSpeed(int num, int speed); + /** + Sets the amount by which paddle jitter is detected. Quick movements + of less than this amount constitute jitter, and do not generate + paddle events. + + @param thresh The threshold to use for jitter detection + */ + void setPaddleThreshold(int thresh); + inline bool kbdAlt(int mod) { #ifndef MAC_OSX diff --git a/stella/src/emucore/Settings.cxx b/stella/src/emucore/Settings.cxx index 7906ce107..7eb85c1c7 100644 --- a/stella/src/emucore/Settings.cxx +++ b/stella/src/emucore/Settings.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Settings.cxx,v 1.84 2006-04-04 23:15:43 stephena Exp $ +// $Id: Settings.cxx,v 1.85 2006-04-05 12:28:37 stephena Exp $ //============================================================================ #include @@ -247,6 +247,12 @@ void Settings::validate() if(i < 0 || i > 3) setInternal("paddle", "0"); + i = getInt("pthresh"); + if(i < 400) + setInternal("pthresh", "400"); + else if(i > 800) + setInternal("pthresh", "800"); + s = getString("palette"); if(s != "standard" && s != "original" && s != "z26") setInternal("palette", "standard"); diff --git a/stella/src/gui/InputDialog.cxx b/stella/src/gui/InputDialog.cxx index 068dafcc4..ae1c10e45 100644 --- a/stella/src/gui/InputDialog.cxx +++ b/stella/src/gui/InputDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: InputDialog.cxx,v 1.12 2006-03-02 13:10:53 stephena Exp $ +// $Id: InputDialog.cxx,v 1.13 2006-04-05 12:28:39 stephena Exp $ //============================================================================ #include "OSystem.hxx" @@ -27,7 +27,8 @@ #include "bspf.hxx" enum { - kPaddleChanged = 'PDch', + kPaddleChanged = 'PDch', + kPaddleThreshChanged = 'PDth', kP0SpeedID = 100, kP1SpeedID = 101, kP2SpeedID = 102, @@ -107,7 +108,7 @@ void InputDialog::addVDeviceTab(const GUI::Font& font) // Add 'mouse to paddle' mapping ypos += 2*lineHeight; - lwidth = font.getStringWidth("Mouse is paddle: "); + lwidth = font.getStringWidth("Paddle threshold: "); pwidth = font.getMaxCharWidth() * 5; myPaddleMode = new SliderWidget(myTab, font, xpos, ypos, pwidth, lineHeight, "Mouse is paddle: ", lwidth, kPaddleChanged); @@ -118,6 +119,19 @@ void InputDialog::addVDeviceTab(const GUI::Font& font) myPaddleModeLabel->setFlags(WIDGET_CLEARBG); wid.push_back(myPaddleMode); + // Add 'paddle threshhold' setting + xpos = 5; ypos += lineHeight + 3; + myPaddleThreshold = new SliderWidget(myTab, font, xpos, ypos, pwidth, lineHeight, + "Paddle threshold: ", + lwidth, kPaddleThreshChanged); + myPaddleThreshold->setMinValue(400); myPaddleThreshold->setMaxValue(800); + xpos += myPaddleThreshold->getWidth() + 5; + myPaddleThresholdLabel = new StaticTextWidget(myTab, font, xpos, ypos+1, + 24, lineHeight, + "", kTextAlignLeft); + myPaddleThresholdLabel->setFlags(WIDGET_CLEARBG); + wid.push_back(myPaddleThreshold); + // Add paddle 0 speed xpos = 5; ypos += lineHeight + 3; myPaddleSpeed[0] = new SliderWidget(myTab, font, xpos, ypos, pwidth, lineHeight, @@ -187,6 +201,10 @@ void InputDialog::loadConfig() myPaddleMode->setValue(instance()->settings().getInt("paddle")); myPaddleModeLabel->setLabel(instance()->settings().getString("paddle")); + // Paddle threshold + myPaddleThreshold->setValue(instance()->settings().getInt("pthresh")); + myPaddleThresholdLabel->setLabel(instance()->settings().getString("pthresh")); + // Paddle speed settings myPaddleSpeed[0]->setValue(instance()->settings().getInt("p1speed")); myPaddleLabel[0]->setLabel(instance()->settings().getString("p1speed")); @@ -210,6 +228,10 @@ void InputDialog::saveConfig() int mode = myPaddleMode->getValue(); instance()->eventHandler().setPaddleMode(mode); + // Paddle threshold + int threshold = myPaddleThreshold->getValue(); + instance()->eventHandler().setPaddleThreshold(threshold); + // Paddle speed settings for(int i = 0; i < 4; ++i) instance()->eventHandler().setPaddleSpeed(i, myPaddleSpeed[i]->getValue()); @@ -275,6 +297,10 @@ void InputDialog::handleCommand(CommandSender* sender, int cmd, myPaddleModeLabel->setValue(myPaddleMode->getValue()); break; + case kPaddleThreshChanged: + myPaddleThresholdLabel->setValue(myPaddleThreshold->getValue()); + break; + case kP0SpeedID: case kP1SpeedID: case kP2SpeedID: diff --git a/stella/src/gui/InputDialog.hxx b/stella/src/gui/InputDialog.hxx index c4cd5342d..9a7718cdb 100644 --- a/stella/src/gui/InputDialog.hxx +++ b/stella/src/gui/InputDialog.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: InputDialog.hxx,v 1.7 2006-03-02 13:10:53 stephena Exp $ +// $Id: InputDialog.hxx,v 1.8 2006-04-05 12:28:39 stephena Exp $ //============================================================================ #ifndef INPUT_DIALOG_HXX @@ -61,6 +61,8 @@ class InputDialog : public Dialog SliderWidget* myPaddleMode; StaticTextWidget* myPaddleModeLabel; + SliderWidget* myPaddleThreshold; + StaticTextWidget* myPaddleThresholdLabel; SliderWidget* myPaddleSpeed[4]; StaticTextWidget* myPaddleLabel[4]; diff --git a/stella/src/gui/OptionsDialog.cxx b/stella/src/gui/OptionsDialog.cxx index dcd04cea2..78cf71652 100644 --- a/stella/src/gui/OptionsDialog.cxx +++ b/stella/src/gui/OptionsDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: OptionsDialog.cxx,v 1.37 2006-03-19 20:57:55 stephena Exp $ +// $Id: OptionsDialog.cxx,v 1.38 2006-04-05 12:28:39 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -112,7 +112,7 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent) checkBounds(fbWidth, fbHeight, &x, &y, &w, &h); myAudioDialog = new AudioDialog(myOSystem, parent, font, x, y, w, h); - w = 230; h = 170; + w = 230; h = 185; checkBounds(fbWidth, fbHeight, &x, &y, &w, &h); myInputDialog = new InputDialog(myOSystem, parent, font, x, y, w, h);