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

View File

@ -1022,4 +1022,6 @@ void Debugger::RewindManager::clear()
for(int i = 0; i < MAX_SIZE; ++i) for(int i = 0; i < MAX_SIZE; ++i)
if(myStateList[i] != NULL) if(myStateList[i] != NULL)
myStateList[i]->reset(); 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 // Add the real controllers for this system
setControllers(md5); setControllers(md5);
// Bumper Bash requires all 4 directions // Bumper Bash always requires all 4 directions
bool allow = (md5 == "aa1c41f86ec44c0a44eb64c332ce08af" || // Other ROMs can use it if the setting is enabled
md5 == "1bf503c724001b09be79c515ecfcbd03"); bool joyallow4 = md5 == "aa1c41f86ec44c0a44eb64c332ce08af" ||
myOSystem->eventHandler().allowAllDirections(allow); md5 == "1bf503c724001b09be79c515ecfcbd03" ||
myOSystem->settings().getBool("joyallow4");
myOSystem->eventHandler().allowAllDirections(joyallow4);
// Reset the system to its power-on state // Reset the system to its power-on state
mySystem->reset(); mySystem->reset();

View File

@ -79,6 +79,7 @@ Settings::Settings(OSystem* osystem)
setInternal("joyaxismap", ""); setInternal("joyaxismap", "");
setInternal("joyhatmap", ""); setInternal("joyhatmap", "");
setInternal("joydeadzone", "0"); setInternal("joydeadzone", "0");
setInternal("joyallow4", "false");
setInternal("pspeed", "6"); setInternal("pspeed", "6");
setInternal("sa1", "left"); setInternal("sa1", "left");
setInternal("sa2", "right"); setInternal("sa2", "right");
@ -351,6 +352,7 @@ void Settings::usage()
<< " -cheat <code> Use the specified cheatcode (see manual for description)\n" << " -cheat <code> Use the specified cheatcode (see manual for description)\n"
<< " -showinfo <1|0> Shows some game info on commandline\n" << " -showinfo <1|0> Shows some game info on commandline\n"
<< " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\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" << " -pspeed <number> Speed of digital emulated paddle movement (1-15)\n"
<< " -sa1 <left|right> Stelladaptor 1 emulates specified joystick port\n" << " -sa1 <left|right> Stelladaptor 1 emulates specified joystick port\n"
<< " -sa2 <left|right> Stelladaptor 2 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, ""); fwidth, fontHeight, "");
wid.push_back(myAVoxPort); 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 // Add items for virtual device ports
addToFocusList(wid, tabID); addToFocusList(wid, tabID);
} }
@ -200,6 +206,9 @@ void InputDialog::loadConfig()
// AtariVox serial port // AtariVox serial port
myAVoxPort->setEditString(instance().settings().getString("avoxport")); myAVoxPort->setEditString(instance().settings().getString("avoxport"));
// Allow all 4 joystick directions
myAllowAll4->setState(instance().settings().getBool("joyallow4"));
myTab->loadConfig(); myTab->loadConfig();
} }
@ -226,6 +235,11 @@ void InputDialog::saveConfig()
// AtariVox serial port // AtariVox serial port
instance().settings().setString("avoxport", myAVoxPort->getEditString()); 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 GuiObject;
class TabWidget; class TabWidget;
class EventMappingWidget; class EventMappingWidget;
class CheckBoxWidget; class CheckboxWidget;
class EditTextWidget; class EditTextWidget;
class PopUpWidget; class PopUpWidget;
class SliderWidget; class SliderWidget;
@ -76,6 +76,7 @@ class InputDialog : public Dialog
SliderWidget* myPaddleSpeed; SliderWidget* myPaddleSpeed;
StaticTextWidget* myPaddleLabel; StaticTextWidget* myPaddleLabel;
EditTextWidget* myAVoxPort; EditTextWidget* myAVoxPort;
CheckboxWidget* myAllowAll4;
}; };
#endif #endif