fixed enabling of EEPROM erase buttonin GameInfoDialog

updated doc for enhanced command dialog and controller auto detection
This commit is contained in:
Thomas Jentzsch 2019-04-01 13:41:09 +02:00
parent 600deea4a3
commit 8c8128934c
5 changed files with 29 additions and 30 deletions

View File

@ -29,9 +29,9 @@
* Disabled some developer options for 'Player settings'. (TODO: doc) * Disabled some developer options for 'Player settings'. (TODO: doc)
* Enhanced command dialog. (TODO: doc) * Enhanced command dialog to display current state.
* Added automatic controller detection. (TODO: doc, Stella.pro cleanup) * Added automatic controller detection. (TODO: Stella.pro cleanup)
* Removed superfluous controller option 'PADDLES_IDIR'. * Removed superfluous controller option 'PADDLES_IDIR'.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -276,6 +276,7 @@
including mapping of CompuMate 'Backspace', 'Space' and 'Enter' functionality to including mapping of CompuMate 'Backspace', 'Space' and 'Enter' functionality to
to the actual keys on your keyboard</li> to the actual keys on your keyboard</li>
<li>Emulates the Mindlink Controller using your computer's mouse</li> <li>Emulates the Mindlink Controller using your computer's mouse</li>
<li>Supports autodetection for most common controller types</li>
<li>Support for real Atari 2600 controllers using the <li>Support for real Atari 2600 controllers using the
<a href="http://www.grandideastudio.com/portfolio/stelladaptor-2600">Stelladaptor</a> and <a href="http://www.grandideastudio.com/portfolio/stelladaptor-2600">Stelladaptor</a> and
<a href="http://2600-daptor.com">2600-daptor/2600-daptor II</a></li> <a href="http://2600-daptor.com">2600-daptor/2600-daptor II</a></li>
@ -605,9 +606,9 @@
<p><img src="graphics/commandmenu.png"></p> <p><img src="graphics/commandmenu.png"></p>
<p>This dialog contains a set of buttons that represent the same functionality <p>This dialog contains a set of buttons that represent the same functionality
as the function keys. You may find this useful if you cannot remember all as the function keys and display the current state. You may find this useful if
the function key events, or you wish to use Stella without a keyboard (ie, you cannot remember all the function key events, or you wish to use Stella
in a standalone gaming system).</p> without a keyboard (ie, in a standalone gaming system).</p>
</blockquote> </blockquote>
<h2><b><a name="Keyboard">Keyboard Layout</a></b></h2> <h2><b><a name="Keyboard">Keyboard Layout</a></b></h2>
@ -3590,7 +3591,7 @@ Ms Pac-Man (Stella extended codes):
<td>Indicates the bank-switching type for the game. <td>Indicates the bank-switching type for the game.
The value of this property must be either <b>Auto</b> or one of the following The value of this property must be either <b>Auto</b> or one of the following
(for more information about bank-switching see Kevin Horton's <a href="http://kevtris.org/files/sizes.txt">2600 bankswitching (for more information about bank-switching see Kevin Horton's <a href="http://kevtris.org/files/sizes.txt">2600 bankswitching
document</a> or the documentation in each cartridge's source code file). Types marked document</a> or the documentation in each cartridge's source code file) types. Types marked
as (&#185;) do not currently have reliable auto-detection, those marked as (&#178;) as (&#185;) do not currently have reliable auto-detection, those marked as (&#178;)
are not fully supported in the debugger: are not fully supported in the debugger:
<table cellpadding="2" border="1"> <table cellpadding="2" border="1">
@ -3674,24 +3675,25 @@ Ms Pac-Man (Stella extended codes):
<tr> <tr>
<td VALIGN="TOP"><i>Controller.Left:</i><br><i>Controller.Right:</i></td> <td VALIGN="TOP"><i>Controller.Left:</i><br><i>Controller.Right:</i></td>
<td>Indicates what type of controller the left and right player <td>Indicates what type of controller the left and right player
uses. The value must be one of the following types: uses. The value must be either <b>Auto</b> or one of the following types. Types marked
as (&#185;) do not have auto-detection yet.
<table cellpadding="2" border="1"> <table cellpadding="2" border="1">
<tr><th>&nbsp;Type&nbsp;</th><th>Description</th></tr> <tr><th>&nbsp;Type&nbsp;</th><th>Description</th></tr>
<tr><td>Joystick </td><td>Atari's famous black joystick that was originally included with the system.</td></tr> <tr><td>Joystick</td><td>Atari's famous black joystick that was originally included with the system.</td></tr>
<tr><td>BoosterGrip </td><td>A controller add-in that plugs directly into the joystick port and provides a pass-through for the joystick. In doing so, it provides the two independent buttons.</td></tr> <tr><td>BoosterGrip &#185</td><td>A controller add-in that plugs directly into the joystick port and provides a pass-through for the joystick. In doing so, it provides the two independent buttons.</td></tr>
<tr><td>Paddles </td><td>Standard paddle controllers for use with games such as Breakout and Warlords. One pair of controller per connector (allows for 4-player Warlords).</td></tr> <tr><td>Paddles </td><td>Standard paddle controllers for use with games such as Breakout and Warlords. One pair of controller per connector (allows for 4-player Warlords).</td></tr>
<tr><td>Paddles_IAxis </td><td>Same as Paddles, except the axes are inverted.</td></tr> <tr><td>Paddles_IAxis &#185</td><td>Same as Paddles, except the axes are inverted.</td></tr>
<tr><td>Paddles_IAxDr </td><td>Same as Paddles, except both the axes and direction of movement are inverted.</td></tr> <tr><td>Paddles_IAxDr &#185</td><td>Same as Paddles, except both the axes and direction of movement are inverted.</td></tr>
<tr><td>Driving </td><td>Looks like a paddle, but allows 360° movement. Only one unit per connector, unlike paddles which were sold in pairs.</td></tr> <tr><td>Driving &#185 </td><td>Looks like a paddle, but allows 360° movement. Only one unit per connector, unlike paddles which were sold in pairs.</td></tr>
<tr><td>Keyboard </td><td>Also known as the Star Raiders controller, functionally identical to the Kid's Controller and Keyboard Controller. Game included an overlay with commands, for use with Star Raiders.</td></tr> <tr><td>Keyboard</td><td>Also known as the Star Raiders controller, functionally identical to the Kid's Controller and Keyboard Controller. Game included an overlay with commands, for use with Star Raiders.</td></tr>
<tr><td>AmigaMouse</td><td>Commodore Amiga computer mouse.</td></tr> <tr><td>AmigaMouse</td><td>Commodore Amiga computer mouse.</td></tr>
<tr><td>AtariMouse </td><td>Atari ST computer mouse.</td></tr> <tr><td>AtariMouse</td><td>Atari ST computer mouse.</td></tr>
<tr><td>Trakball </td><td>Standard Atari 2600 CX22/CX80 'Trak-Ball' controller.</td></tr> <tr><td>Trakball</td><td>Standard Atari 2600 CX22/CX80 'Trak-Ball' controller.</td></tr>
<tr><td><a href="http://atariage.com/store/index.php?l=product_list&c=98">AtariVox</a></td><td>A SpeakJet based unlimited-vocabulary speech/sound synthesizer with 32K EEPROM.</td></tr> <tr><td><a href="http://atariage.com/store/index.php?l=product_list&c=98">AtariVox &#185</a></td><td>A SpeakJet based unlimited-vocabulary speech/sound synthesizer with 32K EEPROM.</td></tr>
<tr><td>SaveKey </td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr> <tr><td>SaveKey</td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr>
<tr><td>Genesis </td><td>Sega Genesis controller, which can be used similar to a BoosterGrip, giving an extra button.</td></tr> <tr><td>Genesis </td><td>Sega Genesis controller, which can be used similar to a BoosterGrip, giving an extra button.</td></tr>
<tr><td>CompuMate </td><td>Spectravideo CompuMate (if either left or right is set, CompuMate is used for both).</td></tr> <tr><td>CompuMate &#185</td><td>Spectravideo CompuMate (if either left or right is set, CompuMate is used for both).</td></tr>
<tr><td>Mindlink </td><td>Mindlink controller.</td></tr> <tr><td>Mindlink &#185</td><td>Mindlink controller.</td></tr>
</table></td> </table></td>
</tr> </tr>

View File

@ -608,22 +608,19 @@ void GameInfoDialog::updateControllerStates()
bool enableSwapPaddles = BSPF::startsWithIgnoreCase(contrLeft, "PADDLES") || bool enableSwapPaddles = BSPF::startsWithIgnoreCase(contrLeft, "PADDLES") ||
BSPF::startsWithIgnoreCase(contrRight, "PADDLES"); BSPF::startsWithIgnoreCase(contrRight, "PADDLES");
if(instance().hasConsole())
{
enableSwapPaddles |= BSPF::equalsIgnoreCase(instance().console().leftController().name(), "Paddles");
enableSwapPaddles |= BSPF::equalsIgnoreCase(instance().console().rightController().name(), "Paddles");
}
if(instance().hasConsole()) if(instance().hasConsole())
{ {
const Controller& lport = instance().console().leftController(); const Controller& lport = instance().console().leftController();
const Controller& rport = instance().console().rightController(); const Controller& rport = instance().console().rightController();
enableSwapPaddles |= BSPF::equalsIgnoreCase(instance().console().leftController().name(), "Paddles");
enableSwapPaddles |= BSPF::equalsIgnoreCase(instance().console().rightController().name(), "Paddles");
// we only enable the button if we have a valid previous and new controller. // we only enable the button if we have a valid previous and new controller.
enableEEEraseButton = ((lport.type() == Controller::Type::SaveKey && contrLeft == "SAVEKEY") || enableEEEraseButton = ((contrLeft == "AUTO" || contrLeft == "SAVEKEY" || contrLeft == "ATARIVOX") &&
(rport.type() == Controller::Type::SaveKey && contrRight == "SAVEKEY") || (lport.type() == Controller::Type::SaveKey || lport.type() == Controller::Type::AtariVox) ||
(lport.type() == Controller::Type::AtariVox && contrLeft == "ATARIVOX") || (contrRight == "AUTO" || contrRight == "SAVEKEY" || contrRight == "ATARIVOX") &&
(rport.type() == Controller::Type::AtariVox && contrRight == "ATARIVOX")); (rport.type() == Controller::Type::SaveKey || rport.type() == Controller::Type::AtariVox));
} }
myLeftPortLabel->setEnabled(enableSelectControl); myLeftPortLabel->setEnabled(enableSelectControl);