Using the Control key in CompuMate mode will no longer interfere with

normal control functions (ie, pressing Ctrl-q will not quit, but send
this combo directly to CompuMate).

Mapped Func-Space to the Backspace key for CompuMate keyboard.
Func-space (which is actually Ctrl-space is still supported).

Updated documentation for CompuMate changes and system requirements.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2418 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2012-03-16 17:57:23 +00:00
parent 5ce726f180
commit 82a048a086
4 changed files with 32 additions and 13 deletions

View File

@ -12,12 +12,12 @@
Release History
===========================================================================
3.5.5 to 3.6: (March xx, 2012)
3.5.5 to 3.6: (March 23, 2012)
* Added support for 2600-daptor II device, including native support
for 7800 controllers, BoosterGrip and Keypad controllers. Special
thanks go to Tom Hafner for a complimentary test sample of this
device.
device, and also for donating a BoosterGrip controller.
* Added ability to dynamically swap the port order of Stelladaptor/
2600-daptor devices with the 'Control-1' key combo (useful if you
@ -26,6 +26,10 @@
* Added CompuMate bankswitching/controller support to the emulation
core; the Spectravideo CompuMate ROMs (NTSC and PAL) now work.
Frequently used keys on the CompuMate are directly mapped to your
keyboard (ie, Func-Space for backspace is mapped to Backspace, etc).
Loading/saving from the cassette player is not yet supported, and
will come in a future release.
* Fixed bug in BoosterGrip controller emulation; the functionality
of the booster and trigger buttons was reversed. Related to this,

View File

@ -260,7 +260,9 @@
joysticks or mouse</li>
<li>Emulates CX-22 / CX-80 style trackballs and Amiga Mouse using your
computer's mouse</li>
<li>Emulates Spectravideo CompuMate system using your computer's keyboard</li>
<li>Emulates Spectravideo CompuMate system using your computer's keyboard,
including mapping of CompuMate 'Backspace', 'Space' and 'Enter' functionality to
to the actual keys on your keyboard.</li>
<li>Support for real Atari 2600 controllers using the
<a href="http://www.stelladaptor.com">Stelladaptor</a> and
<a href="http://2600-daptor.com">2600-adaptor/2600-daptor II</a></li>
@ -306,6 +308,7 @@
<p>
<h3><b><u>General</u> (required for all versions of Stella)</b></h3>
<ul>
<li>1GHz+ CPU</li>
<li>Enough RAM for the OS + 64MB RAM for the emulation; 128MB+ highly recommended</li>
<li>15/16 bit color minimum; 24/32 bit color graphics card highly recommended</li>
<li>SDL version 1.2.10 or greater, latest version highly recommended</li>
@ -323,10 +326,9 @@
<p>The Linux version of Stella is designed to work on a Linux Workstation with
the following:</p>
<ul>
<li>Pentium class machine required; OpenGL accelerated video card highly
recommended</li>
<li>Linux Kernel 2.4.x, Linux Kernel 2.6.x/3.x is highly recommended</li>
<li>Linux Kernel 2.6.x/3.x</li>
<li>i386 or x86_64 class machine, with 32 or 64-bit distribution</li>
<li>OpenGL accelerated video card highly recommended</li>
<li>Other architectures (MIPS, PPC, PPC64, etc) have been confirmed to work,
but aren't as well tested as i386/x86_64</li>
<li>GNU C++ compiler version 4.x and the make utility are required for compiling
@ -340,7 +342,7 @@
the following:</p>
<ul>
<li>MacOSX 10.4 (Tiger) or above</li>
<li>PPC G4 or Intel processor, 500MHz or above</li>
<li>PPC G4/G5 or Intel processor</li>
<li>OpenGL capable video card</li>
<li>Xcode 3.1 and SDL 1.2.14 required to compile a 10.4 compatible Universal Binary version;
Xcode 3.2 and SDL 1.2.15 required to compile the Intel/64-bit version</li>
@ -354,8 +356,7 @@
with the following:</p>
<ul>
<li>Pentium class machine required; OpenGL accelerated video card highly
recommended</li>
<li>OpenGL accelerated video card highly recommended</li>
<li>64-bit port has been tested on Windows Vista/7 only; it may work on
WinXP64 as well, but isn't a priority</li>
<li>Visual C++ 2005 is required to compile the Stella source code for Windows 98 and 2000</li>
@ -1274,10 +1275,11 @@
<tr><td>A - Z </td><td>A - Z </td></tr>
<tr><td>Comma </td><td>Comma </td></tr>
<tr><td>Period </td><td>Period </td></tr>
<tr><td>Function </td><td>Control (left or right) </td></tr>
<tr><td>Func </td><td>Control (left or right) </td></tr>
<tr><td>Shift </td><td>Shift (left or right) </td></tr>
<tr><td>Enter </td><td>; or Return/Enter </td></tr>
<tr><td>Space </td><td>/ or Space </td></tr>
<tr><td>Func-Space </td><td>Backspace </td></tr>
</table>
<a name="DeveloperKeys"></a>

View File

@ -65,14 +65,14 @@ void CompuMate::update()
rp.myAnalogPinValue[Controller::Nine] = Controller::minimumResistance;
rp.myAnalogPinValue[Controller::Five] = Controller::maximumResistance;
rp.myDigitalPinState[Controller::Six] = true;
rp.myDigitalPinState[Controller::Three] = true;
rp.myDigitalPinState[Controller::Four] = true;
if (KeyTable[KBDK_LSHIFT] || KeyTable[KBDK_RSHIFT])
rp.myAnalogPinValue[Controller::Five] = Controller::minimumResistance;
if (KeyTable[KBDK_LCTRL] || KeyTable[KBDK_RCTRL])
lp.myAnalogPinValue[Controller::Nine] = Controller::minimumResistance;
rp.myDigitalPinState[Controller::Three] = true;
rp.myDigitalPinState[Controller::Four] = true;
switch(myCart.column())
{
case 0:
@ -112,6 +112,12 @@ void CompuMate::update()
rp.myDigitalPinState[Controller::Six] = false;
if (KeyTable[KBDK_SLASH] || KeyTable[KBDK_SPACE])
rp.myDigitalPinState[Controller::Four] = false;
// Emulate Ctrl-space (aka backspace) with the actual Backspace key
if (KeyTable[KBDK_BACKSPACE])
{
lp.myAnalogPinValue[Controller::Nine] = Controller::minimumResistance;
rp.myDigitalPinState[Controller::Four] = false;
}
break;
case 6:
if (KeyTable[KBDK_9]) lp.myDigitalPinState[Controller::Six] = false;

View File

@ -994,7 +994,7 @@ void EventHandler::handleEvent(Event::Type event, int state)
////////////////////////////////////////////////////////////////////////
case Event::Fry:
myFryingFlag = bool(state);
if(myUseCtrlKeyFlag) myFryingFlag = bool(state);
return;
case Event::VolumeDecrease:
@ -2051,6 +2051,10 @@ void EventHandler::setEventState(State state)
{
myState = state;
// Normally, the usage of Control key is determined by 'ctrlcombo'
// For certain ROMs it may be forced off, whatever the setting
myUseCtrlKeyFlag = myOSystem->settings().getBool("ctrlcombo");
// Only enable Unicode in GUI modes, since there we need it for ascii data
// Otherwise, it causes a performance hit, so leave it off
switch(myState)
@ -2059,6 +2063,9 @@ void EventHandler::setEventState(State state)
myOverlay = NULL;
myOSystem->sound().mute(false);
SDL_EnableUNICODE(0);
if(myOSystem->console().controller(Controller::Left).type() ==
Controller::CompuMate)
myUseCtrlKeyFlag = false;
break;
case S_PAUSE: