diff --git a/Changes.txt b/Changes.txt
index 60fd29f4e..c3c0304e1 100644
--- a/Changes.txt
+++ b/Changes.txt
@@ -12,7 +12,7 @@
Release History
===========================================================================
-6.1 to 6.2: (??? ??, 2020)
+6.1.2 to 6.2: (??? ??, 2020)
* Added that paddle centering and sensitivity can be adjusted (TODO: Doc)
@@ -22,7 +22,11 @@
a game. This allows the user to save high scores for these games. For each
game and variation, the top 10 scores can be saved. (TODO: Doc)
- * Add option which lets default ROM path follow launcher navigation (TODO: Doc)
+ * Added 'Turbo' mode, runs the game as fast as the computer allows.
+
+ * Added selectable dialog fonts
+
+ * Added option which lets default ROM path follow launcher navigation
* Added displaying last write address in the debugger.
@@ -33,6 +37,16 @@
-Have fun!
+6.1.1 to 6.1.2: (April 25, 2020)
+
+ * Fixed bug with remapped events not being reloaded in certain cases.
+
+ * Fixed bug in debugger for 3E scheme when displaying active RAM bank.
+
+ * Fixed bug in "Dragon Defender" ROM being misconfigured for Mindlink
+ controller.
+
+
6.1 to 6.1.1: (April 4, 2020)
* Fixed crash in 3E bankswitching scheme when writing to ROM addresses.
diff --git a/Makefile b/Makefile
index b0e41062b..939f0d7cf 100644
--- a/Makefile
+++ b/Makefile
@@ -8,14 +8,11 @@
## SS SS tt ee ll ll aa aa
## SSSS ttt eeeee llll llll aaaaa
##
-## Copyright (c) 1995-2016 by Bradford W. Mott, Stephen Anthony
+## Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony
## and the Stella Team
##
## See the file "License.txt" for information on usage and redistribution of
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
-##
-## Based on code from ScummVM - Scumm Interpreter
-## Copyright (C) 2002-2004 The ScummVM project
##============================================================================
#######################################################################
diff --git a/appveyor.yml b/appveyor.yml
index a087f4e42..211b69a24 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -7,15 +7,15 @@ environment:
matrix:
- Platform: x64
- Platform: Win32
-
+
Configuration: Release
- SDL2_version: 2.0.10
+ SDL2_version: 2.0.12
install:
- cmd: |
- curl -o "C:\SDL2-devel.zip" https://www.libsdl.org/release/SDL2-devel-2.0.10-VC.zip
+ curl -o "C:\SDL2-devel.zip" "https://www.libsdl.org/release/SDL2-devel-%SDL2_version%-VC.zip"
7z x "C:\SDL2-devel.zip" -o"C:\"
xcopy /S "C:\SDL2-%SDL2_version%\include" src\common
diff --git a/debian/changelog b/debian/changelog
index af319a670..81ab67bce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+stella (6.1.2-1) stable; urgency=high
+
+ * Version 6.1.2 release
+
+ -- Stephen Anthony Sat, 25 Apr 2020 17:09:59 -0230
+
+
stella (6.1.1-1) stable; urgency=high
* Version 6.1.1 release
diff --git a/docs/debugger.html b/docs/debugger.html
index 46e38d079..4f0c1cf6f 100644
--- a/docs/debugger.html
+++ b/docs/debugger.html
@@ -331,7 +331,7 @@ previous rewind operation. The rewind buffer is 100 levels deep by default, the
size can be configured e.g. in the
Developer Settings - Time Machine dialog.
-
The other operations are Step, Trace, Scan+1, Frame+1 and Exit (debugger).
+The other operations are Step, Trace, Scan+1, Frame+1 and Run.
You can also use the buttons from anywhere in the GUI via hotkeys.
@@ -382,12 +382,12 @@ size can be configured e.g. in the
Backquote (`) |
- Exit |
+ Run |
For MacOS use 'Cmd' instead of 'Alt' key.
-To the left of the global buttons, you find the "Options..." button.
+To the left of the global buttons, you find the 'Options...' button.
@@ -608,7 +608,7 @@ created a symbol file, you can use labels for the expression.
Example: You have got a label called "kernel". To break there,
the command is "break kernel". After you've set the breakpoint,
-exit the debugger ("quit" or click the Exit button). The emulator
+exit the debugger (enter "run" or click the 'Run' button). The emulator
will run until it gets to the breakpoint, then it will enter the
debugger with the Program Counter pointing to the instruction
at the breakpoint.
@@ -1027,8 +1027,8 @@ graphics and positions, and the playfield.
of the displays are editable. You can even toggle individual bits in
the GRP0/1 and playfield registers (remember to double-click).
-The group of buttons labelled "Strobes" allows you to write to any
-of the strobe registers at any time.
+The buttons allow you to write to any of the strobe registers at
+any time.
The collision registers are displayed in decoded format, in a table.
You can see exactly which objects have hit what. These are read-only
@@ -1103,7 +1103,7 @@ or TV effects are enabled, you won't see the effects here; this shows the
raw TIA image only.
To e.g. watch the TIA draw the frame one scanline at a time, you can
-use the "Scan+1" button, the prompt "scan" command or the Control-L key.
+use the 'Scan+1' button, the prompt "scan" command or the Control-L key.
You can also right-click anywhere in this window to show a context menu,
as illustrated:
@@ -1213,7 +1213,7 @@ section for details.

All the registers and flags are displayed, and can be changed by
double-clicking on them (to the left). Flags are toggled on double-click.
-Selected registers here can also be changed by using the "Data Operations" buttons,
+Selected registers here can also be changed by using the 'Data Operations' buttons,
further described in (J). All items are shown in hex. Any label defined for the
current PC value is shown to the right. Decimal and binary equivalents
are shown for SP/A/X/Y to the right (first decimal, then binary).
@@ -1631,7 +1631,7 @@ but it helps to know at least a little about 6502 programming.
Enter the debugger by pressing the ` (backquote) key. Don't get
killed before you do this, though. You should still have all 5 lives.
- In the RAM display, click the "Search" button and enter "5" for input.
+ In the RAM display, click the 'Search' button and enter "5" for input.
This searches RAM for your value and highlights all addresses that match
the input. You should see two addresses highlighted: "00a5" and "00ba".
These are the only two addresses that currently have the value 5, so they're
@@ -1647,7 +1647,7 @@ but it helps to know at least a little about 6502 programming.
Get killed! Ram an enemy tank, or let him shoot you. Wait for
the explosion to finish. You will now have 4 lives.
- Enter the debugger again. Click the "Compare" button in RAM widget and enter
+ Enter the debugger again. Click the 'Compare...' button in RAM widget and enter
a value of 4. Now the RAM widget should only show one highlighted address:
"00ba". What we did was search within our previous results (the ones that
were 5 before) for the new value 4. Address $00ba used to have the value 5,
diff --git a/docs/graphics/options_misc.png b/docs/graphics/options_misc.png
index aa382419f..b1930b45d 100644
Binary files a/docs/graphics/options_misc.png and b/docs/graphics/options_misc.png differ
diff --git a/docs/graphics/options_misc_classic.png b/docs/graphics/options_misc_classic.png
index d4a77dc9f..1eab6039e 100644
Binary files a/docs/graphics/options_misc_classic.png and b/docs/graphics/options_misc_classic.png differ
diff --git a/docs/graphics/options_misc_light.png b/docs/graphics/options_misc_light.png
index b1113c033..c0cebe477 100644
Binary files a/docs/graphics/options_misc_light.png and b/docs/graphics/options_misc_light.png differ
diff --git a/docs/graphics/options_ui.png b/docs/graphics/options_ui.png
index 322527cb3..54ed568fc 100644
Binary files a/docs/graphics/options_ui.png and b/docs/graphics/options_ui.png differ
diff --git a/docs/index.html b/docs/index.html
index 68be48e0d..c845b487f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1626,6 +1626,12 @@
Control + i |
+
+ Toggle 'Turbo' mode |
+ Control + t |
+ Control + t |
+
+
Toggle sound on/off |
Control + ] |
@@ -2004,6 +2010,11 @@
Control the emulation speed (as a percentage, 10 - 1000). |
+
+ -turbo <1|0> |
+ Enable 'Turbo' mode for maximum emulation speed. |
+
+
-uimessages <1|0> |
Enable or disable display of message in the UI. Note that messages
@@ -2063,29 +2074,29 @@
| Set the pitch o f Pitfall II music. |
-
- -tia.zoom <zoom> |
- Use the specified zoom level (integer) while in TIA/emulation mode.
- |
-
+
+ -tia.zoom <zoom> |
+ Use the specified zoom level (integer) while in TIA/emulation mode.
+ |
+
-
- -tia.vsizeadjust <-5 - 5> |
- Adjust the display height of the TIA image
- |
-
+
+ -tia.vsizeadjust <-5 - 5> |
+ Adjust the display height of the TIA image
+ |
+
-
- -tia.inter <1|0> |
- Use interpolation for the TIA image (results in blending/smoothing
- of the image). |
-
+
+ -tia.inter <1|0> |
+ Use interpolation for the TIA image (results in blending/smoothing
+ of the image). |
+
-
- -tia.fs_stretch <1|0> |
- Stretch TIA image completely while in fullscreen mode, vs. keeping the correct
- aspect ratio. |
-
+
+ -tia.fs_stretch <1|0> |
+ Stretch TIA image completely while in fullscreen mode, vs. keeping the correct
+ aspect ratio. |
+
-tia.fs_overscan <0 - 10> |
@@ -2393,6 +2404,11 @@
Use the specified palette for UI elements. |
+
+ -dialogfont <small|low_medium|medium|large|large12|large14|large16> |
+ Set the size of the font in the dialogs. |
+
+
-dialogpos <0 - 4> |
Set the position of dialogs within Stella windows (0 = center). |
@@ -2437,7 +2453,12 @@
-romdir <dir> |
- Set the directory where the ROM launcher will start. |
+ Set the path where the ROM launcher will start. |
+
+
+
+ -followlauncher <0|1> |
+ Make the start path follow ROM launcher navigation. |
@@ -2903,8 +2924,9 @@
Item | Brief description | For more information, see CommandLine |
Theme | Theme to use for UI elements (see examples) | -uipalette |
- Dialogs position | Position of dialogs with Stella window | -dialogpos |
+ Dialogs font | The font used in the dialogs | -dialogfont |
HiDPI mode | Scales the UI by a factor of two when enabled | -hidpi |
+ Dialogs position | Position of dialogs with Stella window | -dialogpos |
Confirm exiting... | Display a popup when emulation is exited | -confirmexit |
List input delay | Maximum delay between keypresses in filelist-widgets before a search string resets. | -listdelay |
Mouse wheel scroll | Number of lines a mouse scroll will move in list-widgets | -mwheel |
diff --git a/src/cheat/CheatCodeDialog.cxx b/src/cheat/CheatCodeDialog.cxx
index 780fbea2f..5ce380e0b 100644
--- a/src/cheat/CheatCodeDialog.cxx
+++ b/src/cheat/CheatCodeDialog.cxx
@@ -35,46 +35,50 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent,
const GUI::Font& font)
: Dialog(osystem, parent, font, "Cheat codes")
{
- const int lineHeight = font.getLineHeight(),
- fontWidth = font.getMaxCharWidth(),
- buttonWidth = font.getStringWidth("Defaults") + 20,
- buttonHeight = font.getLineHeight() + 4;
- const int HBORDER = 10;
- const int VBORDER = 10 + _th;
+ const int lineHeight = font.getLineHeight(),
+ fontHeight = font.getFontHeight(),
+ fontWidth = font.getMaxCharWidth(),
+ buttonWidth = font.getStringWidth("One shot ") + fontWidth * 2.5,
+ buttonHeight = font.getLineHeight() * 1.25;
+ const int VBORDER = fontHeight / 2;
+ const int HBORDER = fontWidth * 1.25;
+ const int INDENT = fontWidth * 2;
+ const int VGAP = fontHeight / 4;
+
int xpos, ypos;
WidgetArray wid;
ButtonWidget* b;
// Set real dimensions
_w = 45 * fontWidth + HBORDER * 2;
- _h = 11 * (lineHeight + 4) + VBORDER;
+ _h = _th + 11 * (lineHeight + 4) + VBORDER * 2;
// List of cheats, with checkboxes to enable/disable
- xpos = HBORDER; ypos = VBORDER;
+ xpos = HBORDER; ypos = _th + VBORDER;
myCheatList =
- new CheckListWidget(this, font, xpos, ypos, _w - buttonWidth - HBORDER * 2 - 8,
- _h - 2*buttonHeight - VBORDER);
+ new CheckListWidget(this, font, xpos, ypos, _w - buttonWidth - HBORDER * 2 - fontWidth,
+ _h - _th - buttonHeight - VBORDER * 3);
myCheatList->setEditable(false);
wid.push_back(myCheatList);
- xpos += myCheatList->getWidth() + 8; ypos = VBORDER;
+ xpos += myCheatList->getWidth() + fontWidth; ypos = _th + VBORDER;
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
"Add" + ELLIPSIS, kAddCheatCmd);
wid.push_back(b);
- ypos += lineHeight + 8;
+ ypos += lineHeight + VGAP * 2;
myEditButton =
new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
"Edit" + ELLIPSIS, kEditCheatCmd);
wid.push_back(myEditButton);
- ypos += lineHeight + 8;
+ ypos += lineHeight + VGAP * 2;
myRemoveButton =
new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
"Remove", kRemCheatCmd);
wid.push_back(myRemoveButton);
- ypos += lineHeight + 8 * 3;
+ ypos += lineHeight + VGAP * 2 * 3;
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
"One shot" + ELLIPSIS, kAddOneShotCmd);
diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx
index d7b9ecb17..bce5c2e7c 100644
--- a/src/common/FrameBufferSDL2.cxx
+++ b/src/common/FrameBufferSDL2.cxx
@@ -320,7 +320,8 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode)
}
uInt32 renderFlags = SDL_RENDERER_ACCELERATED;
- if(myOSystem.settings().getBool("vsync")) // V'synced blits option
+ if(myOSystem.settings().getBool("vsync")
+ && !myOSystem.settings().getBool("turbo")) // V'synced blits option
renderFlags |= SDL_RENDERER_PRESENTVSYNC;
const string& video = myOSystem.settings().getString("video"); // Render hint
if(video != "")
diff --git a/src/common/JoyMap.cxx b/src/common/JoyMap.cxx
index 2a20b4a8b..266dd5e74 100644
--- a/src/common/JoyMap.cxx
+++ b/src/common/JoyMap.cxx
@@ -185,9 +185,35 @@ JoyMap::JoyMappingArray JoyMap::getEventMapping(const Event::Type event, const E
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string JoyMap::saveMapping(const EventMode mode) const
{
+ using MapType = std::pair;
+ std::vector sortedMap(myMap.begin(), myMap.end());
+
+ std::sort(sortedMap.begin(), sortedMap.end(),
+ [](const MapType& a, const MapType& b)
+ {
+ // Event::Type first
+ if(a.second != b.second)
+ return a.second < b.second;
+
+ if(a.first.button != b.first.button)
+ return a.first.button < b.first.button;
+
+ if(a.first.axis != b.first.axis)
+ return a.first.axis < b.first.axis;
+
+ if(a.first.adir != b.first.adir)
+ return a.first.adir < b.first.adir;
+
+ if(a.first.hat != b.first.hat)
+ return a.first.hat < b.first.hat;
+
+ return a.first.hdir < b.first.hdir;
+ }
+ );
+
ostringstream buf;
- for (auto item : myMap)
+ for (auto item : sortedMap)
{
if (item.first.mode == mode)
{
diff --git a/src/common/KeyMap.cxx b/src/common/KeyMap.cxx
index eca0369ec..47b34dc9c 100644
--- a/src/common/KeyMap.cxx
+++ b/src/common/KeyMap.cxx
@@ -16,11 +16,12 @@
//============================================================================
#include "KeyMap.hxx"
+#include