diff --git a/docs/index.html b/docs/index.html
index e1402f31a..2c0d9b449 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1554,6 +1554,12 @@
Control + p |
+
+ Toggle display interpolation |
+ Control + i |
+ Control + i |
+
+
Toggle sound on/off |
Control + ] |
diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx
index cedda0655..5c53e7a7d 100644
--- a/src/common/PKeyboardHandler.cxx
+++ b/src/common/PKeyboardHandler.cxx
@@ -457,6 +457,7 @@ PhysicalKeyboardHandler::EventMappingArray PhysicalKeyboardHandler::DefaultCommo
{Event::ScanlinesIncrease, KBDK_0, MOD3},
{Event::ToggleColorLoss, KBDK_L, KBDM_CTRL},
{Event::TogglePalette, KBDK_P, KBDM_CTRL},
+ {Event::ToggleInter, KBDK_I, KBDM_CTRL},
{Event::ToggleJitter, KBDK_J, MOD3},
{Event::ToggleFrameStats, KBDK_L, MOD3},
{Event::ToggleTimeMachine, KBDK_T, MOD3},
diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx
index e3557fe1d..449179fb8 100644
--- a/src/emucore/Console.cxx
+++ b/src/emucore/Console.cxx
@@ -550,6 +550,21 @@ void Console::setPalette(const string& type)
myTIA->enableFixedColors(true);
}
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+void Console::toggleInter()
+{
+ bool enabled = myOSystem.settings().getBool("tia.inter");
+
+ myOSystem.settings().setValue("tia.inter", !enabled);
+
+ // ... and apply potential setting changes to the TIA surface
+ myOSystem.frameBuffer().tiaSurface().updateSurfaceSettings();
+ ostringstream ss;
+
+ ss << "Interpolation " << (!enabled ? "enabled" : "disabled");
+ myOSystem.frameBuffer().showMessage(ss.str());
+}
+
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::togglePhosphor()
{
diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx
index d1b79ee1f..b2805fdd0 100644
--- a/src/emucore/Console.hxx
+++ b/src/emucore/Console.hxx
@@ -215,6 +215,12 @@ class Console : public Serializable, public ConsoleIO
*/
void setPalette(const string& palette);
+ /**
+ Toggle interpolation on/off
+ */
+ void toggleInter();
+
+
/**
Toggles phosphor effect.
*/
diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx
index 033849dfe..6c7d62884 100644
--- a/src/emucore/Event.hxx
+++ b/src/emucore/Event.hxx
@@ -120,6 +120,8 @@ class Event
CompuMateQuote, CompuMateBackspace, CompuMateEquals, CompuMatePlus,
CompuMateSlash,
+ ToggleInter,
+
LastType
};
diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx
index b3306fd0e..143ab8b3e 100644
--- a/src/emucore/EventHandler.cxx
+++ b/src/emucore/EventHandler.cxx
@@ -527,6 +527,10 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated)
if (pressed && !repeated) myOSystem.console().togglePalette();
return;
+ case Event::ToggleInter:
+ if (pressed && !repeated) myOSystem.console().toggleInter();
+ return;
+
case Event::ToggleJitter:
if (pressed && !repeated) myOSystem.console().toggleJitter();
return;
@@ -1835,6 +1839,7 @@ EventHandler::EmulActionList EventHandler::ourEmulActionList = { {
{ Event::FormatDecrease, "Decrease display format", "" },
{ Event::FormatIncrease, "Increase display format", "" },
{ Event::TogglePalette, "Switch palette (Standard/Z26/User)", "" },
+ { Event::ToggleInter, "Toggle display interpolation", "" },
// TV effects:
{ Event::VidmodeStd, "Disable TV effects", "" },
@@ -1961,7 +1966,7 @@ const Event::EventSet EventHandler::AudioVideoEvents = {
Event::FormatDecrease, Event::FormatIncrease,
Event::VCenterDecrease, Event::VCenterIncrease,
Event::OverscanDecrease, Event::OverscanIncrease,
- Event::TogglePalette,
+ Event::TogglePalette, Event::ToggleInter
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx
index 29219317e..0e7586dff 100644
--- a/src/emucore/EventHandler.hxx
+++ b/src/emucore/EventHandler.hxx
@@ -464,7 +464,7 @@ class EventHandler
#else
PNG_SIZE = 0,
#endif
- EMUL_ACTIONLIST_SIZE = 140 + PNG_SIZE + COMBO_SIZE,
+ EMUL_ACTIONLIST_SIZE = 141 + PNG_SIZE + COMBO_SIZE,
MENU_ACTIONLIST_SIZE = 18
;