Added '-joyallow4' commandline argument and associate UI item in

InputDialog/Virtual Devs to allow all 4 directions to be pressed
simultaneously on a virtual joystick.  This support was always present
for 'Bumper Bash', but it can now be enabled/disabled for any ROM.
Note that the setting is ignored for 'Bumper Bash', as that ROM
requires it to be always turned on.

Fixed debugger rewind issue from last commit; the rewind list wasn't
being properly reset when entering the debugger or selecting a new ROM.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1850 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2009-08-05 20:33:40 +00:00
parent 3c5cc40e08
commit 82268325a0
7 changed files with 53 additions and 32 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -788,6 +788,13 @@
range from 3200 to 32200.</td>
</tr>
<tr>
<td><pre>-joyallow4 &lt;1|0&gt;</pre></td>
<td>Allow all 4 directions on a joystick to be pressed
simultaneously. Bumper Bash ignores this setting,
and always allows all 4 directions.</td>
</tr>
<tr>
<td><pre>-pspeed &lt;number&gt;</pre></td>
<td>Speed for digital emulation of paddles (1-15).</td>
@ -2042,33 +2049,26 @@
<img src="graphics/eventmapping.png">
<img src="graphics/eventmapping_remap.png">
<p>Virtual devices can be configured under the 'Virtual Devs' tab, shown below:<br><br>
<img src="graphics/eventmapping_virtualdevs.png"></p>
<p>Stelladaptor devices can be configured to either the left or right virtual
ports. See <b>Section 11 - <a href="#Adaptor">Stelladaptor Support</a></b>
for further information.</p>
<p>Joystick deadzone area for analog joysticks can be set here. The deadzone
can be adjusted in an interval from 0 - 29, which internally is converted to
the range 3200 - 32200 using the formula '3200 + DEADZONE * 1000'.</p>
<p>Paddle settings are also configured here. The mouse can emulate either paddle
0, 1, 2, or 3. Note that some paddle games don't default to paddle 0. In those
cases, the ROM properties will automatically set the mouse to emulate the paddle
used by Player 0. So, for example, a ROM that defaults to paddle 1 (Demons to Diamonds)
will set 'Mouse is paddle' to 1, and a ROM that defaults to paddle 3 (Tac-Scan) will
set 'Mouse is paddle' to 3.</p>
<p>Paddle speed is used when emulating a paddle using a digital device
(keyboard, digital joystick, etc). Because of the on/off nature of digital
devices, there are no smooth analog values as would be present on a real
paddle. When using digital devices, the paddle is moved a certain amount
each frame. This speed setting specifies how much movement will occur.</p>
<p>The serial port to which a real AtariVox is connected can be set here.
See <b>Section 12 - <a href="#AtariVox">AtariVox/SaveKey Support</a></b> for
further information.</p>
<p>Virtual devices can be configured under the 'Virtual Devs' tab, shown below:</p>
<table border="5" cellpadding="2" frame="box" rules="none">
<tr>
<td><img src="graphics/eventmapping_virtualdevs.png"></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top">
<table border="1" cellpadding="4">
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
<tr><td>Stelladaptor X is</td><td>Specifies which virtual port each Stelladaptor uses (See <b>Section 11 - <a href="#Adaptor">Stelladaptor Support</a></b>)</td><td>-sa1 &amp; -sa2</td></tr>
<tr><td>Joy deadzone</td><td>Joystick deadzone area for analog joysticks</td><td>-joydeadzone</td></tr>
<tr><td>Mouse is paddle</td><td>The mouse can emulate either paddle 0, 1, 2, or 3.</td><td>&nbsp;</td></tr>
<tr><td>Paddle speed</td><td>Speed used when emulating a paddle using a digital device</td><td>-pspeed</td></tr>
<tr><td>AVox serial port</td><td>Described in further detail in <b>Section 12 - <a href="#AtariVox">AtariVox/SaveKey Support</a></b> </td><td>-avoxport</td></tr>
<tr><td>Allow all 4 ...</td><td>Allow all 4 joystick directions to be pressed simultaneously</td><td>-joyallow4</td></tr>
</table>
</td>
</tr>
</table>
<!-- ///////////////////////////////////////////////////////////////////////// -->
@ -2651,6 +2651,7 @@ Ms Pac-Man (Stella extended codes):
<tr><td>E7 </td><td>16K M-network </td></tr>
<tr><td>EF </td><td>64K Homestar Runner </td></tr>
<tr><td>EFSC </td><td>64K Homestar Runner + ram</td></tr>
<tr><td>F0 </td><td>Dynacom Megaboy </td></tr>
<tr><td>F4 </td><td>32K Atari </td></tr>
<tr><td>F4SC </td><td>32K Atari + ram </td></tr>
<tr><td>F6 </td><td>16K Atari </td></tr>
@ -2659,7 +2660,6 @@ Ms Pac-Man (Stella extended codes):
<tr><td>F8SC </td><td>8K Atari + ram </td></tr>
<tr><td>FA </td><td>CBS RAM Plus </td></tr>
<tr><td>FE </td><td>8K Decathlon </td></tr>
<tr><td>F0 </td><td>Dynacom Megaboy </td></tr>
<tr><td>MC &#185;&#178;</td><td>C. Wilkson Megacart </td></tr>
<tr><td>SB </td><td>128-256k SUPERbanking </td></tr>
<tr><td>UA </td><td>8K UA Ltd. </td></tr>
@ -3129,7 +3129,7 @@ Ms Pac-Man (Stella extended codes):
<td VALIGN="TOP">Robert&nbsp;Tuccitto</td>
<td>Provided valuable bugtesting and feedback which finally helped in fixing
a long-standing lockup which occurred after Stella has been running for
71 muinutes.</td>
71 minutes.</td>
</tr>
<tr>

View File

@ -1022,4 +1022,6 @@ void Debugger::RewindManager::clear()
for(int i = 0; i < MAX_SIZE; ++i)
if(myStateList[i] != NULL)
myStateList[i]->reset();
myTop = mySize = 0;
}

View File

@ -166,10 +166,12 @@ Console::Console(OSystem* osystem, Cartridge* cart, const Properties& props)
// Add the real controllers for this system
setControllers(md5);
// Bumper Bash requires all 4 directions
bool allow = (md5 == "aa1c41f86ec44c0a44eb64c332ce08af" ||
md5 == "1bf503c724001b09be79c515ecfcbd03");
myOSystem->eventHandler().allowAllDirections(allow);
// Bumper Bash always requires all 4 directions
// Other ROMs can use it if the setting is enabled
bool joyallow4 = md5 == "aa1c41f86ec44c0a44eb64c332ce08af" ||
md5 == "1bf503c724001b09be79c515ecfcbd03" ||
myOSystem->settings().getBool("joyallow4");
myOSystem->eventHandler().allowAllDirections(joyallow4);
// Reset the system to its power-on state
mySystem->reset();

View File

@ -79,6 +79,7 @@ Settings::Settings(OSystem* osystem)
setInternal("joyaxismap", "");
setInternal("joyhatmap", "");
setInternal("joydeadzone", "0");
setInternal("joyallow4", "false");
setInternal("pspeed", "6");
setInternal("sa1", "left");
setInternal("sa2", "right");
@ -351,6 +352,7 @@ void Settings::usage()
<< " -cheat <code> Use the specified cheatcode (see manual for description)\n"
<< " -showinfo <1|0> Shows some game info on commandline\n"
<< " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\n"
<< " -joyallow4 <1|0> Allow all 4 directions on a joystick to be pressed simultaneously\n"
<< " -pspeed <number> Speed of digital emulated paddle movement (1-15)\n"
<< " -sa1 <left|right> Stelladaptor 1 emulates specified joystick port\n"
<< " -sa2 <left|right> Stelladaptor 2 emulates specified joystick port\n"

View File

@ -170,6 +170,12 @@ void InputDialog::addVDeviceTab(const GUI::Font& font)
fwidth, fontHeight, "");
wid.push_back(myAVoxPort);
// Add 'allow all 4 directions' for joystick
xpos = 10; ypos += 2*lineHeight;
myAllowAll4 = new CheckboxWidget(myTab, font, xpos, ypos,
"Allow all 4 directions on joystick");
wid.push_back(myAllowAll4);
// Add items for virtual device ports
addToFocusList(wid, tabID);
}
@ -200,6 +206,9 @@ void InputDialog::loadConfig()
// AtariVox serial port
myAVoxPort->setEditString(instance().settings().getString("avoxport"));
// Allow all 4 joystick directions
myAllowAll4->setState(instance().settings().getBool("joyallow4"));
myTab->loadConfig();
}
@ -226,6 +235,11 @@ void InputDialog::saveConfig()
// AtariVox serial port
instance().settings().setString("avoxport", myAVoxPort->getEditString());
// Allow all 4 joystick directions
bool allowall4 = myAllowAll4->getState();
instance().settings().setBool("joyallow4", allowall4);
instance().eventHandler().allowAllDirections(allowall4);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -23,7 +23,7 @@ class OSystem;
class GuiObject;
class TabWidget;
class EventMappingWidget;
class CheckBoxWidget;
class CheckboxWidget;
class EditTextWidget;
class PopUpWidget;
class SliderWidget;
@ -76,6 +76,7 @@ class InputDialog : public Dialog
SliderWidget* myPaddleSpeed;
StaticTextWidget* myPaddleLabel;
EditTextWidget* myAVoxPort;
CheckboxWidget* myAllowAll4;
};
#endif