- Added 'Ctrl ]' and 'Ctrl [' keys to dynamically increase/decrease volume.

- Added 'Ctrl 0', 'Ctrl 1', 'Ctrl 2', 'Ctrl 3' keys to dynamically set which
paddle the mouse should emulate.

- Updated the user manual with above options.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@350 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2005-01-04 02:29:31 +00:00
parent 219687f521
commit 6508718b39
7 changed files with 151 additions and 36 deletions

View File

@ -209,40 +209,33 @@
software. Stella is written in C++, which allows it to be ported to other software. Stella is written in C++, which allows it to be ported to other
operating systems and architectures. Since its original release Stella has operating systems and architectures. Since its original release Stella has
been ported to AcornOS, AmigaOS, DOS, FreeBSD, Linux, MacOS, OpenStep, OS/2, been ported to AcornOS, AmigaOS, DOS, FreeBSD, Linux, MacOS, OpenStep, OS/2,
Sega Dreamcast, Unix, and Windows. Sega Dreamcast, Unix, and Windows.
</p> </p>
<h2><b>New in Release 1.4.1</b></h2> <h2><b>New in Release 1.4.2</b></h2>
<ul> <ul>
<li>Fixed PAL sound issues. PAL games now should sound correct (no distortion <li>Updated the sound system. All popping and cracking sounds that previously
or missing sounds), but some games may still run too fast. This is still occurred at program start/stop and when entering/exiting menu or pause mode
a work-in-progress, and will be fixed in Stella 1.5.</li> have been eliminated.</li>
<li>Cleaned up the SDL event gathering loop. This should hopefully fix the <li>Added <b>Control [</b> and <b>Control ]</b> keys to dynamically adjust the
problems with "double-pumping events" reported by some Windows users. sound volume during emulation.</li>
Event gathering and dispatching is now much faster as well.</li>
<li>Fixed a bug where the Control or Alt keys could be assigned to some event, <li>Added <b>Control 0</b>, <b>Control 1</b>, <b>Control 2</b>, <b>Control 3</b>
but they could never be used. Control/Alt can now be used for any event.</li> keys to dynamically change which paddle the mouse should emulate.</li>
<li>Updated stella.pro file to work with the latest Good2600 ROMset release <li>Added <b>-video_driver</b> argument. This accepts the different options
(Thanks go to Voch for helping to maintain the stella.pro file).</li> that can be specified for SDL_VIDEODRIVER (see SDL homepage for more
information). Basically, it eliminates the need to set the SDL_VIDEODRIVER
environment variable.</li>
<li>For the Windows port; removed requirement for ROM files to be named *.bin <li>For the Windows port; added <i>windib</i> and <i>directx</i> as options for
in the StellaX frontend. The ROM's can now have any name, but ZIP-files are 'video_driver' when using software rendering. The 'windib' option is now
not yet supported.</li> the default, and in many cases it's up to 10 times faster than using
'directx'.</li>
<li>For the Windows port; fixed the problems with the included modified SDL <li>For the OSX port; blah ...</li>
library and Windows 98 users. Stella should now run in Windows 98.</li>
<li>For the OSX port; added preference to allow user to select the directory
in which ROM images are stored. This sets the default directory to start
the browsing for a ROM in, and doesn't preclude the user from selecting a
file outside that directory.</li>
<li>For the OSX port; fixed preferences bug where Preferences changed before
a game was opened were not being saved.</li>
</ul> </ul>
<p> <p>
@ -328,8 +321,9 @@
<p>The Mac version of Stella is designed to work on a Power Macintosh with <p>The Mac version of Stella is designed to work on a Power Macintosh with
the following:</p> the following:</p>
<ul> <ul>
<li>Mac OSX 10.1 or Above </li> <li>Mac OSX 10.1 or Above</li>
<li>500 MHz G3 PPC processor or Above </li> <li>500 MHz G4 PPC processor or above (Stella <b>may</b> work with a G3
processor, but this is still a work-in-progress)</li>
</ul> </ul>
<p> <p>
@ -1491,6 +1485,35 @@
<td>Control + s</td> <td>Control + s</td>
</tr> </tr>
<tr>
<td>Increase volume</td>
<td>Control + ]</td>
</tr>
<tr>
<td>Decrease volume</td>
<td>Control + [</td>
</tr>
<tr>
<td>Set mouse to emulate paddle 0</td>
<td>Control + 0</td>
</tr>
<tr>
<td>Set mouse to emulate paddle 1</td>
<td>Control + 1</td>
</tr>
<tr>
<td>Set mouse to emulate paddle 2</td>
<td>Control + 2</td>
</tr>
<tr>
<td>Set mouse to emulate paddle 3</td>
<td>Control + 3</td>
</tr>
</table> </table>
<br><br><br> <br><br><br>

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferGL.cxx,v 1.7 2005-01-03 19:16:09 stephena Exp $ // $Id: FrameBufferGL.cxx,v 1.8 2005-01-04 02:29:28 stephena Exp $
//============================================================================ //============================================================================
#include <SDL.h> #include <SDL.h>
@ -319,7 +319,7 @@ void FrameBufferGL::drawBoundedBox(uInt32 x, uInt32 y, uInt32 w, uInt32 h)
glRecti(x, y, x+w, y+h); glRecti(x, y, x+w, y+h);
// Now draw the outer edges // Now draw the outer edges
glLineWidth(theZoomLevel/2); glLineWidth(theZoomLevel);
glColor4f(0.8, 0.8, 0.8, 1.0); glColor4f(0.8, 0.8, 0.8, 1.0);
glBegin(GL_LINE_LOOP); glBegin(GL_LINE_LOOP);
glVertex2i(x, y ); // Top Left glVertex2i(x, y ); // Top Left

View File

@ -13,17 +13,20 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: SoundSDL.cxx,v 1.6 2004-07-22 01:54:08 stephena Exp $ // $Id: SoundSDL.cxx,v 1.7 2005-01-04 02:29:29 stephena Exp $
//============================================================================ //============================================================================
#include <sstream>
#include <cassert> #include <cassert>
#include <cmath> #include <cmath>
#include <SDL.h> #include <SDL.h>
#include "TIASound.h" #include "TIASound.h"
#include "Console.hxx" #include "Console.hxx"
#include "FrameBuffer.hxx"
#include "Serializer.hxx" #include "Serializer.hxx"
#include "Deserializer.hxx" #include "Deserializer.hxx"
#include "Settings.hxx"
#include "System.hxx" #include "System.hxx"
#include "SoundSDL.hxx" #include "SoundSDL.hxx"
@ -155,6 +158,33 @@ void SoundSDL::setVolume(Int32 percent)
} }
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void SoundSDL::adjustVolume(Int8 direction)
{
ostringstream strval;
string message;
Int32 percent = myVolume;
if(direction == -1)
percent -= 2;
else if(direction == 1)
percent += 2;
if((percent < 0) || (percent > 100))
return;
setVolume(percent);
// Now show an onscreen message
strval << percent;
message = "Volume set to ";
message += strval.str();
myConsole->frameBuffer().showMessage(message);
myConsole->settings().setInt("volume", percent);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void SoundSDL::set(uInt16 addr, uInt8 value, Int32 cycle) void SoundSDL::set(uInt16 addr, uInt8 value, Int32 cycle)
{ {

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: SoundSDL.hxx,v 1.5 2004-06-20 00:52:37 stephena Exp $ // $Id: SoundSDL.hxx,v 1.6 2005-01-04 02:29:29 stephena Exp $
//============================================================================ //============================================================================
#ifndef SOUNDSDL_HXX #ifndef SOUNDSDL_HXX
@ -29,7 +29,7 @@
This class implements the sound API for SDL. This class implements the sound API for SDL.
@author Stephen Anthony and Bradford W. Mott @author Stephen Anthony and Bradford W. Mott
@version $Id: SoundSDL.hxx,v 1.5 2004-06-20 00:52:37 stephena Exp $ @version $Id: SoundSDL.hxx,v 1.6 2005-01-04 02:29:29 stephena Exp $
*/ */
class SoundSDL : public Sound class SoundSDL : public Sound
{ {
@ -83,6 +83,14 @@ class SoundSDL : public Sound
*/ */
virtual void setVolume(Int32 percent); virtual void setVolume(Int32 percent);
/**
Adjusts the volume of the sound device based on the given direction.
@param direction Increase or decrease the current volume by a predefined
amount based on the direction (1 = increase, -1 =decrease)
*/
virtual void adjustVolume(Int8 direction);
public: public:
/** /**
Loads the current state of this device from the given Deserializer. Loads the current state of this device from the given Deserializer.

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: mainSDL.cxx,v 1.18 2005-01-03 19:16:09 stephena Exp $ // $Id: mainSDL.cxx,v 1.19 2005-01-04 02:29:29 stephena Exp $
//============================================================================ //============================================================================
#include <fstream> #include <fstream>
@ -64,6 +64,7 @@ static void HandleEvents();
static uInt32 GetTicks(); static uInt32 GetTicks();
static void SetupProperties(PropertiesSet& set); static void SetupProperties(PropertiesSet& set);
static void ShowInfo(const string& msg); static void ShowInfo(const string& msg);
static void SetPaddleMode(Int32 mode);
#ifdef JOYSTICK_SUPPORT #ifdef JOYSTICK_SUPPORT
// Lookup table for joystick numbers and events // Lookup table for joystick numbers and events
@ -266,6 +267,21 @@ static KeyList keyList[] = {
}; };
/**
Set the mouse to emulate the given paddle
*/
void SetPaddleMode(Int32 mode)
{
thePaddleMode = mode;
ostringstream buf;
buf << "Mouse is paddle " << mode;
theDisplay->showMessage(buf.str());
theSettings->setInt("paddle",thePaddleMode);
}
/** /**
Prints given message based on 'theShowInfoFlag' Prints given message based on 'theShowInfoFlag'
*/ */
@ -412,6 +428,15 @@ void HandleEvents()
case SDLK_RETURN: case SDLK_RETURN:
theDisplay->toggleFullscreen(); theDisplay->toggleFullscreen();
break; break;
case SDLK_LEFTBRACKET:
theSound->adjustVolume(-1);
break;
case SDLK_RIGHTBRACKET:
theSound->adjustVolume(1);
break;
#ifdef DISPLAY_OPENGL #ifdef DISPLAY_OPENGL
case SDLK_f: case SDLK_f:
if(theUseOpenGLFlag) if(theUseOpenGLFlag)
@ -475,6 +500,22 @@ void HandleEvents()
theDisplay->setupPalette(); theDisplay->setupPalette();
break; break;
case SDLK_0: // Ctrl-0 sets the mouse to paddle 0
SetPaddleMode(0);
break;
case SDLK_1: // Ctrl-1 sets the mouse to paddle 1
SetPaddleMode(1);
break;
case SDLK_2: // Ctrl-2 sets the mouse to paddle 2
SetPaddleMode(2);
break;
case SDLK_3: // Ctrl-3 sets the mouse to paddle 3
SetPaddleMode(3);
break;
#ifdef DEVELOPER_SUPPORT #ifdef DEVELOPER_SUPPORT
case SDLK_END: // Ctrl-End increases Width case SDLK_END: // Ctrl-End increases Width
theConsole->changeWidth(1); theConsole->changeWidth(1);

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: Sound.cxx,v 1.13 2004-07-22 01:54:08 stephena Exp $ // $Id: Sound.cxx,v 1.14 2005-01-04 02:29:30 stephena Exp $
//============================================================================ //============================================================================
#include "Serializer.hxx" #include "Serializer.hxx"
@ -76,6 +76,11 @@ void Sound::setVolume(Int32 volume)
{ {
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Sound::adjustVolume(Int8 direction)
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Sound::load(Deserializer& in) bool Sound::load(Deserializer& in)
{ {

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: Sound.hxx,v 1.12 2004-07-22 01:54:08 stephena Exp $ // $Id: Sound.hxx,v 1.13 2005-01-04 02:29:31 stephena Exp $
//============================================================================ //============================================================================
#ifndef SOUND_HXX #ifndef SOUND_HXX
@ -33,7 +33,7 @@ class System;
to compile Stella with no sound support whatsoever. to compile Stella with no sound support whatsoever.
@author Stephen Anthony and Bradford W. Mott @author Stephen Anthony and Bradford W. Mott
@version $Id: Sound.hxx,v 1.12 2004-07-22 01:54:08 stephena Exp $ @version $Id: Sound.hxx,v 1.13 2005-01-04 02:29:31 stephena Exp $
*/ */
class Sound class Sound
{ {
@ -107,6 +107,14 @@ class Sound
*/ */
virtual void setVolume(Int32 percent); virtual void setVolume(Int32 percent);
/**
Adjusts the volume of the sound device based on the given direction.
@param direction Increase or decrease the current volume by a predefined
amount based on the direction (1 = increase, -1 =decrease)
*/
virtual void adjustVolume(Int8 direction);
public: public:
/** /**
Loads the current state of this device from the given Deserializer. Loads the current state of this device from the given Deserializer.