Some minor UI improvements to the InputSettings dialog; renamed the

'Virtual Devs' tab to 'Devices & Ports'.  Updated documentation and
snapshots for this change.

Added Halo 2600 ROM info to internal properties database.

Increased default setting for 'joydeadzone' from 0 to 13.  This means
the default deadzone is somewhere around half the axis range (~16500).

Fixed behaviour of hat events; events weren't actually being turned off
until the stick was centered.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2108 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2010-08-21 23:08:44 +00:00
parent 0fa706c558
commit 26b1654aa2
14 changed files with 59 additions and 58 deletions

View File

@ -12,6 +12,20 @@
Release History
===========================================================================
3.2 to 3.2.1: (August x, 2010)
* Improved behaviour of joystick 'hat' movement. This should fix bugs
most visible in Yars' Revenge.
* Fixed bug in debugger rewind states; bankswitching wasn't being
performed during the rewind. Related to this, fixed a similar issue
with the debugger 'loadstate' and 'savestate' commands.
* Added game properties info for the newly released 'Halo 2600' ROM.
-Have fun!
3.1.2 to 3.2: (August 20, 2010)
* NOTE: because of the many event-related changes in this release, all
@ -111,8 +125,6 @@
* Updated included ZLib to latest release version (1.2.5).
-Have fun!
3.1.1 to 3.1.2: (May 3, 2010)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -10,7 +10,7 @@
<br><br>
<center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center>
<center><h4><b>Release 3.2</b></h4></center>
<center><h4><b>Release 3.2.1</b></h4></center>
<br><br>
<center><h2><b>User's Guide</b></h2></center>
@ -2341,10 +2341,10 @@
</p>
<p>Virtual devices can be configured under the 'Virtual Devs' tab, shown below:</p>
<p>Device and port settings can be configured under the 'Devices & Ports' tab, shown below:</p>
<table border="5" cellpadding="2" frame="box" rules="none">
<tr>
<td><img src="graphics/eventmapping_virtualdevs.png"></td>
<td><img src="graphics/eventmapping_devsports.png"></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td valign="top">
<table border="1" cellpadding="4">
@ -2541,7 +2541,7 @@
this is outside the scope of this document). Once your operating system
properly detects the AtariVox, you will need to tell Stella which serial
port it is connected to. This is done by using the '-avoxport' commandline
argument, or by setting it in the UI under the 'Virtual Devs' tab in
argument, or by setting it in the UI under the 'Devices & Ports' tab in
<b>Advanced Configuration - <a href="#Remapping">Input Devices</a></b>.</p>
<p>Note that you must use the entire name of the port as specified by

View File

@ -27,7 +27,7 @@
regenerated and the application recompiled.
*/
#define DEF_PROPS_SIZE 3240
#define DEF_PROPS_SIZE 3241
static const char* DefProps[DEF_PROPS_SIZE][20] = {
{ "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -983,6 +983,7 @@ static const char* DefProps[DEF_PROPS_SIZE][20] = {
{ "4ac9f40ddfcf194bd8732a75b3f2f214", "Atari, Stephen Keith, Preston Stuart", "CX26106", "Grover's Music Maker (12-29-1982) (Atari) (Prototype)", "Uses Kids/Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" },
{ "4ae8c76cd6f24a2e181ae874d4d2aa3d", "", "", "Flash Gordon (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "4af4103759d603c82b1c9c5acd2d8faf", "Imagic, Bob Smith", "720114-2A, 13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "4afa7f377eae1cafb4265c68f73f2718", "Ed Fries", "", "Halo 2600 (2010) (Ed Fries)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "4afe528a082f0d008e7319ebd481248d", "", "", "Multi-Color Demo 1 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "4b143d7dcf6c96796c37090cba045f4f", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "4b205ef73a5779acc5759bde3f6d33ed", "", "", "Berzerk (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },

View File

@ -848,18 +848,32 @@ void EventHandler::poll(uInt64 time)
// Preprocess all hat events, converting to Stella JoyHat type
// Generate multiple equivalent hat events representing combined direction
// when we get a diagonal hat event
if(value == SDL_HAT_CENTERED)
handleJoyHatEvent(stick, hat, EVENT_HATCENTER);
else
if(myState == S_EMULATE)
{
if(value & SDL_HAT_UP)
handleJoyHatEvent(stick, hat, EVENT_HATUP);
if(value & SDL_HAT_RIGHT)
handleJoyHatEvent(stick, hat, EVENT_HATRIGHT);
if(value & SDL_HAT_DOWN)
handleJoyHatEvent(stick, hat, EVENT_HATDOWN);
if(value & SDL_HAT_LEFT)
handleJoyHatEvent(stick, hat, EVENT_HATLEFT);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATUP][kEmulationMode],
value & SDL_HAT_UP);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATRIGHT][kEmulationMode],
value & SDL_HAT_RIGHT);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATDOWN][kEmulationMode],
value & SDL_HAT_DOWN);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATLEFT][kEmulationMode],
value & SDL_HAT_LEFT);
}
else if(myOverlay != NULL)
{
if(value == SDL_HAT_CENTERED)
myOverlay->handleJoyHatEvent(stick, hat, EVENT_HATCENTER);
else
{
if(value & SDL_HAT_UP)
myOverlay->handleJoyHatEvent(stick, hat, EVENT_HATUP);
if(value & SDL_HAT_RIGHT)
myOverlay->handleJoyHatEvent(stick, hat, EVENT_HATRIGHT);
if(value & SDL_HAT_DOWN)
myOverlay->handleJoyHatEvent(stick, hat, EVENT_HATDOWN);
if(value & SDL_HAT_LEFT)
myOverlay->handleJoyHatEvent(stick, hat, EVENT_HATLEFT);
}
}
break; // SDL_JOYHATMOTION
}
@ -911,29 +925,6 @@ void EventHandler::poll(uInt64 time)
myEvent->set(Event::MouseAxisYValue, 0);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EventHandler::handleJoyHatEvent(int stick, int hat, JoyHat value)
{
#ifdef JOYSTICK_SUPPORT
if(myState == S_EMULATE)
{
if(value == EVENT_HATCENTER)
{
// Turn off all associated events, since we don't know exactly
// which one was previously activated.
handleEvent(myJoyHatTable[stick][hat][EVENT_HATUP] [kEmulationMode], 0);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATDOWN] [kEmulationMode], 0);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATLEFT] [kEmulationMode], 0);
handleEvent(myJoyHatTable[stick][hat][EVENT_HATRIGHT][kEmulationMode], 0);
}
else
handleEvent(myJoyHatTable[stick][hat][value][kEmulationMode], 1);
}
else if(myOverlay != NULL)
myOverlay->handleJoyHatEvent(stick, hat, value);
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EventHandler::handleEvent(Event::Type event, int state)
{

View File

@ -336,15 +336,6 @@ class EventHandler
void allowAllDirections(bool allow) { myAllowAllDirectionsFlag = allow; }
private:
/**
Send a joystick hat event to the handler
@param stick The joystick number
@param hat The joystick hat
@param value The value on the given hat
*/
void handleJoyHatEvent(int stick, int hat, JoyHat value);
/**
Detects and changes the eventhandler state

View File

@ -81,7 +81,7 @@ Settings::Settings(OSystem* osystem)
setInternal("joyaxismap", "");
setInternal("joyhatmap", "");
setInternal("combomap", "");
setInternal("joydeadzone", "0");
setInternal("joydeadzone", "13");
setInternal("joyallow4", "false");
setInternal("usemouse", "true");
setInternal("pspeed", "6");

View File

@ -19607,3 +19607,9 @@
"Cartridge.Rarity" "Homebrew"
"Display.Phosphor" "YES"
""
"Cartridge.MD5" "4afa7f377eae1cafb4265c68f73f2718"
"Cartridge.Manufacturer" "Ed Fries"
"Cartridge.Name" "Halo 2600 (2010) (Ed Fries)"
"Cartridge.Rarity" "Homebrew"
""

View File

@ -48,7 +48,7 @@ InputDialog::InputDialog(OSystem* osystem, DialogContainer* parent,
WidgetArray wid;
// Set real dimensions
_w = BSPF_min(48 * fontWidth + 10, max_w);
_w = BSPF_min(49 * fontWidth + 10, max_w);
_h = BSPF_min(12 * (lineHeight + 4) + 10, max_h);
// The tab widget
@ -78,8 +78,8 @@ InputDialog::InputDialog(OSystem* osystem, DialogContainer* parent,
myTab->setParentWidget(tabID, myMenuEventMapper);
addToFocusList(myMenuEventMapper->getFocusList(), tabID);
// 3) Virtual device support
addVDeviceTab(font);
// 3) Devices & ports
addDevicePortTab(font);
// Finalize the tabs, and activate the first tab
myTab->activateTabs();
@ -101,7 +101,7 @@ InputDialog::~InputDialog()
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void InputDialog::addVDeviceTab(const GUI::Font& font)
void InputDialog::addDevicePortTab(const GUI::Font& font)
{
const int lineHeight = font.getLineHeight(),
fontWidth = font.getMaxCharWidth(),
@ -110,8 +110,8 @@ void InputDialog::addVDeviceTab(const GUI::Font& font)
WidgetArray wid;
StringMap items;
// Virtual device/ports
tabID = myTab->addTab("Virtual Devs");
// Devices/ports
tabID = myTab->addTab("Devices & Ports");
// Stelladaptor mappings
xpos = 5; ypos = 5;

View File

@ -52,7 +52,7 @@ class InputDialog : public Dialog
void setDefaults();
private:
void addVDeviceTab(const GUI::Font& font);
void addDevicePortTab(const GUI::Font& font);
private:
enum {