diff --git a/stella/src/build/makefile b/stella/src/build/makefile index 006cf1acc..3a5386005 100644 --- a/stella/src/build/makefile +++ b/stella/src/build/makefile @@ -13,7 +13,7 @@ ## See the file "license" for information on usage and redistribution of ## this file, and for a DISCLAIMER OF ALL WARRANTIES. ## -## $Id: makefile,v 1.71 2005-04-04 02:19:19 stephena Exp $ +## $Id: makefile,v 1.72 2005-04-28 19:28:31 stephena Exp $ ##============================================================================ ##============================================================================ @@ -39,6 +39,9 @@ OPTIMIZATIONS = ### to override some emulation defaults DEVELOPER_SUPPORT = 1 +### to include sound support + SOUND_SUPPORT = 1 + ### to build on SMP (or distcc-based) machines ### change to number of CPU's you have NUMBER_CPU = 1 @@ -53,7 +56,7 @@ LD = g++ LDFLAGS = `sdl-config --cflags` LDLIBS = `sdl-config --libs` -OBJECTS = mainSDL.o SoundSDL.o FrameBufferSoft.o +OBJECTS = mainSDL.o FrameBufferSoft.o OPTIONS = EXE_NAME = SMP = @@ -97,6 +100,11 @@ ifdef DEVELOPER_SUPPORT OPTIONS += -DDEVELOPER_SUPPORT endif +ifdef SOUND_SUPPORT + OBJECTS += TIASound.o SoundSDL.o + OPTIONS += -DSOUND_SUPPORT +endif + default: @echo "" @@ -155,8 +163,8 @@ CORE_OBJS = Booster.o Cart.o Cart2K.o Cart3F.o Cart4K.o CartAR.o CartDPC.o \ CartF8.o CartF8SC.o CartFASC.o CartFE.o CartMC.o CartCV.o \ CartMB.o CartUA.o Console.o Control.o Driving.o \ Event.o Joystick.o Keyboard.o M6532.o MD5.o MediaSrc.o Paddles.o \ - Props.o PropsSet.o Random.o Sound.o Switches.o Settings.o TIA.o \ - Serializer.o Deserializer.o TIASound.o EventHandler.o FrameBuffer.o \ + Props.o PropsSet.o Random.o SoundNull.o Switches.o Settings.o TIA.o \ + Serializer.o Deserializer.o EventHandler.o FrameBuffer.o \ OSystem.o \ $(M6502_OBJS) $(GUI_OBJS) @@ -290,9 +298,6 @@ Props.o: $(CORE)/Props.cxx $(CORE)/Props.hxx Random.o: $(CORE)/Random.cxx $(CORE)/Random.hxx $(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/Random.cxx -Sound.o: $(CORE)/Sound.cxx $(CORE)/Sound.hxx - $(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(CORE)/Sound.cxx - Switches.o: $(CORE)/Switches.cxx $(CORE)/Switches.hxx $(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/Switches.cxx @@ -320,6 +325,9 @@ SettingsWin32.o: $(SRC)/win32/SettingsWin32.cxx $(SRC)/win32/SettingsWin32.hxx OSystemWin32.o: $(SRC)/win32/OSystemWin32.cxx $(SRC)/win32/OSystemWin32.hxx $(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(SRC)/win32/OSystemWin32.cxx +SoundNull.o: $(COMMON)/SoundNull.cxx $(COMMON)/SoundNull.hxx + $(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(COMMON)/SoundNull.cxx + SoundSDL.o: $(COMMON)/SoundSDL.cxx $(COMMON)/SoundSDL.hxx $(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(COMMON)/SoundSDL.cxx diff --git a/stella/src/common/SoundSDL.cxx b/stella/src/common/SoundSDL.cxx index 73dcf7539..dc3d78695 100644 --- a/stella/src/common/SoundSDL.cxx +++ b/stella/src/common/SoundSDL.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: SoundSDL.cxx,v 1.12 2005-03-26 19:26:47 stephena Exp $ +// $Id: SoundSDL.cxx,v 1.13 2005-04-28 19:28:32 stephena Exp $ //============================================================================ #include @@ -34,9 +34,11 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SoundSDL::SoundSDL(OSystem* osystem) : Sound(osystem), + myIsEnabled(osystem->settings().getBool("sound")), myFragmentSizeLogBase2(0), myIsMuted(false) { + myOSystem->attach(this); initialize(true); } @@ -44,25 +46,31 @@ SoundSDL::SoundSDL(OSystem* osystem) SoundSDL::~SoundSDL() { // Close the SDL audio system if it's initialized - if(myIsInitializedFlag) - { - SDL_PauseAudio(1); - SDL_CloseAudio(); - } + closeAudio(); +} - myIsInitializedFlag = false; +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void SoundSDL::setEnabled(bool enable) +{ + myIsEnabled = enable; + myOSystem->settings().setBool("sound", enable); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SoundSDL::initialize(bool forcerestart) { - if(forcerestart && myIsInitializedFlag) + // Check whether to start the sound subsystem + if(!myIsEnabled) { - SDL_PauseAudio(1); - SDL_CloseAudio(); - myIsInitializedFlag = false; + closeAudio(); + if(myOSystem->settings().getBool("showinfo")) + cout << "Sound disabled." << endl << endl; + return; } + if(forcerestart && myIsInitializedFlag) + closeAudio(); + bool isAlreadyInitialized = (SDL_WasInit(SDL_INIT_AUDIO) & SDL_INIT_AUDIO) > 0; if(!isAlreadyInitialized) @@ -138,8 +146,6 @@ void SoundSDL::initialize(bool forcerestart) << " Frag size: " << fragsize << endl << endl; } } - - } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -186,6 +192,7 @@ void SoundSDL::setVolume(Int32 percent) { if((percent >= 0) && (percent <= 100)) { + myOSystem->settings().setInt("volume", percent); SDL_LockAudio(); myVolume = percent; Tia_volume(percent); @@ -218,7 +225,19 @@ void SoundSDL::adjustVolume(Int8 direction) message += strval.str(); myOSystem->frameBuffer().showMessage(message); - myOSystem->settings().setInt("volume", percent); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void SoundSDL::adjustCycleCounter(Int32 amount) +{ + myLastRegisterSetCycle += amount; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void SoundSDL::setFrameRate(uInt32 framerate) +{ + myDisplayFrameRate = framerate; + myLastRegisterSetCycle = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -250,9 +269,7 @@ void SoundSDL::set(uInt16 addr, uInt8 value, Int32 cycle) void SoundSDL::processFragment(uInt8* stream, Int32 length) { if(!myIsInitializedFlag) - { return; - } // If there are excessive items on the queue then we'll remove some if(myRegWriteQueue.duration() > (myFragmentSizeLogBase2 / myDisplayFrameRate)) @@ -334,6 +351,17 @@ void SoundSDL::callback(void* udata, uInt8* stream, int len) sound->processFragment(stream, (Int32)len); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void SoundSDL::closeAudio() +{ + if(myIsInitializedFlag) + { + SDL_PauseAudio(1); + SDL_CloseAudio(); + myIsInitializedFlag = false; + } +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool SoundSDL::load(Deserializer& in) { diff --git a/stella/src/common/SoundSDL.hxx b/stella/src/common/SoundSDL.hxx index 04fb0b895..b849c015c 100644 --- a/stella/src/common/SoundSDL.hxx +++ b/stella/src/common/SoundSDL.hxx @@ -13,11 +13,11 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: SoundSDL.hxx,v 1.9 2005-03-26 19:26:47 stephena Exp $ +// $Id: SoundSDL.hxx,v 1.10 2005-04-28 19:28:32 stephena Exp $ //============================================================================ -#ifndef SOUNDSDL_HXX -#define SOUNDSDL_HXX +#ifndef SOUND_SDL_HXX +#define SOUND_SDL_HXX class OSystem; @@ -31,7 +31,7 @@ class OSystem; This class implements the sound API for SDL. @author Stephen Anthony and Bradford W. Mott - @version $Id: SoundSDL.hxx,v 1.9 2005-03-26 19:26:47 stephena Exp $ + @version $Id: SoundSDL.hxx,v 1.10 2005-04-28 19:28:32 stephena Exp $ */ class SoundSDL : public Sound { @@ -48,41 +48,64 @@ class SoundSDL : public Sound virtual ~SoundSDL(); public: + /** + Enables/disables the sound subsystem. + + @param enable Either true or false, to enable or disable the sound system + */ + void setEnabled(bool enable); + + /** + The system cycle counter is being adjusting by the specified amount. Any + members using the system cycle counter should be adjusted as needed. + + @param amount The amount the cycle counter is being adjusted by + */ + void adjustCycleCounter(Int32 amount); + + /** + Sets the display framerate. Sound generation for NTSC and PAL games + depends on the framerate, so we need to set it here. + + @param framerate The base framerate depending on NTSC or PAL ROM + */ + void setFrameRate(uInt32 framerate); + /** Initializes the sound device. This must be called before any calls are made to derived methods. @param forcerestart Do a soft or hard reset of the sound subsystem */ - virtual void initialize(bool forcerestart = false); + void initialize(bool forcerestart = false); /** Return true iff the sound device was successfully initialized. - @return true iff the sound device was successfully initialized + @return true iff the sound device was successfully initialized. */ - virtual bool isSuccessfullyInitialized() const; + bool isSuccessfullyInitialized() const; /** Set the mute state of the sound object. While muted no sound is played. @param state Mutes sound if true, unmute if false */ - virtual void mute(bool state); + void mute(bool state); /** - Resets the sound device. + Reset the sound device. */ - virtual void reset(); + void reset(); /** Sets the sound register to a given value. - @param addr The register address + @param addr The register address @param value The value to save into the register - @param cycle The CPU cycle at which the register is being updated + @param cycle The system cycle at which the register is being updated */ - virtual void set(uInt16 addr, uInt8 value, Int32 cycle); + void set(uInt16 addr, uInt8 value, Int32 cycle); /** Sets the volume of the sound device to the specified level. The @@ -91,7 +114,7 @@ class SoundSDL : public Sound @param percent The new volume percentage level for the sound device */ - virtual void setVolume(Int32 percent); + void setVolume(Int32 percent); /** Adjusts the volume of the sound device based on the given direction. @@ -99,7 +122,7 @@ class SoundSDL : public Sound @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); + void adjustVolume(Int8 direction); public: /** @@ -203,9 +226,18 @@ class SoundSDL : public Sound }; private: - // Audio specification structure - SDL_AudioSpec myHardwareSpec; - + // Indicates if the sound subsystem is to be initialized + bool myIsEnabled; + + // Indicates if the sound device was successfully initialized + bool myIsInitializedFlag; + + // Indicates the cycle when a sound register was last set + Int32 myLastRegisterSetCycle; + + // Indicates the base framerate depending on whether the ROM is NTSC or PAL + uInt32 myDisplayFrameRate; + // Log base 2 of the selected fragment size double myFragmentSizeLogBase2; @@ -215,12 +247,18 @@ class SoundSDL : public Sound // Current volume as a percentage (0 - 100) uInt32 myVolume; + // Audio specification structure + SDL_AudioSpec myHardwareSpec; + // Queue of TIA register writes RegWriteQueue myRegWriteQueue; private: // Callback function invoked by the SDL Audio library when it needs data static void callback(void* udata, uInt8* stream, int len); + + // Closes the audio device + void closeAudio(); }; #endif diff --git a/stella/src/common/mainSDL.cxx b/stella/src/common/mainSDL.cxx index ccc976891..861331d7e 100644 --- a/stella/src/common/mainSDL.cxx +++ b/stella/src/common/mainSDL.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: mainSDL.cxx,v 1.30 2005-04-03 19:37:32 stephena Exp $ +// $Id: mainSDL.cxx,v 1.31 2005-04-28 19:28:32 stephena Exp $ //============================================================================ #include @@ -38,10 +38,15 @@ #include "FrameBufferSoft.hxx" #include "PropsSet.hxx" #include "Sound.hxx" -#include "SoundSDL.hxx" #include "Settings.hxx" #include "OSystem.hxx" +#ifdef SOUND_SUPPORT + #include "SoundSDL.hxx" +#else + #include "SoundNull.hxx" +#endif + #ifdef DISPLAY_OPENGL #include "FrameBufferGL.hxx" #endif @@ -396,10 +401,11 @@ int main(int argc, char* argv[]) } // Create a sound object for playing audio, even if sound has been disabled - if(theSettings->getBool("sound")) - theSound = new SoundSDL(theOSystem); - else - theSound = new Sound(theOSystem); +#ifdef SOUND_SUPPORT + theSound = new SoundSDL(theOSystem); +#else + theSound = new SoundNull(theOSystem); +#endif // Setup the SDL joysticks (must be done after FrameBuffer is created) /* FIXME - don't exit if joysticks can't be initialized diff --git a/stella/src/emucore/Sound.hxx b/stella/src/emucore/Sound.hxx index c0ee6b8fa..7226731b6 100644 --- a/stella/src/emucore/Sound.hxx +++ b/stella/src/emucore/Sound.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Sound.hxx,v 1.16 2005-03-26 19:26:47 stephena Exp $ +// $Id: Sound.hxx,v 1.17 2005-04-28 19:28:33 stephena Exp $ //============================================================================ #ifndef SOUND_HXX @@ -26,12 +26,11 @@ class Deserializer; #include "bspf.hxx" /** - This class is a base class for the various sound objects. - It has almost no functionality, but is useful if one wishes - to compile Stella with no sound support whatsoever. + This class is an abstract base class for the various sound objects. + It has no functionality whatsoever. - @author Stephen Anthony and Bradford W. Mott - @version $Id: Sound.hxx,v 1.16 2005-03-26 19:26:47 stephena Exp $ + @author Stephen Anthony + @version $Id: Sound.hxx,v 1.17 2005-04-28 19:28:33 stephena Exp $ */ class Sound { @@ -40,21 +39,23 @@ class Sound Create a new sound object. The init method must be invoked before using the object. */ - Sound(OSystem* osystem); - - /** - Destructor - */ - virtual ~Sound(); + Sound(OSystem* osystem) { myOSystem = osystem; } public: + /** + Enables/disables the sound subsystem. + + @param enable Either true or false, to enable or disable the sound system + */ + virtual void setEnabled(bool enable) = 0; + /** The system cycle counter is being adjusting by the specified amount. Any members using the system cycle counter should be adjusted as needed. @param amount The amount the cycle counter is being adjusted by */ - virtual void adjustCycleCounter(Int32 amount); + virtual void adjustCycleCounter(Int32 amount) = 0; /** Sets the display framerate. Sound generation for NTSC and PAL games @@ -62,7 +63,7 @@ class Sound @param framerate The base framerate depending on NTSC or PAL ROM */ - virtual void setFrameRate(uInt32 framerate); + virtual void setFrameRate(uInt32 framerate) = 0; /** Initializes the sound device. This must be called before any @@ -70,26 +71,26 @@ class Sound @param forcerestart Do a soft or hard reset of the sound subsystem */ - virtual void initialize(bool forcerestart = false); + virtual void initialize(bool forcerestart = false) = 0; /** Return true iff the sound device was successfully initialized. @return true iff the sound device was successfully initialized. */ - virtual bool isSuccessfullyInitialized() const; + virtual bool isSuccessfullyInitialized() const = 0; /** Set the mute state of the sound object. While muted no sound is played. @param state Mutes sound if true, unmute if false */ - virtual void mute(bool state); + virtual void mute(bool state) = 0; /** Reset the sound device. */ - virtual void reset(); + virtual void reset() = 0; /** Sets the sound register to a given value. @@ -98,7 +99,7 @@ class Sound @param value The value to save into the register @param cycle The system cycle at which the register is being updated */ - virtual void set(uInt16 addr, uInt8 value, Int32 cycle); + virtual void set(uInt16 addr, uInt8 value, Int32 cycle) = 0; /** Sets the volume of the sound device to the specified level. The @@ -107,7 +108,7 @@ class Sound @param percent The new volume percentage level for the sound device */ - virtual void setVolume(Int32 percent); + virtual void setVolume(Int32 percent) = 0; /** Adjusts the volume of the sound device based on the given direction. @@ -115,7 +116,7 @@ class Sound @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); + virtual void adjustVolume(Int8 direction) = 0; public: /** @@ -124,7 +125,7 @@ public: @param in The deserializer device to load from. @return The result of the load. True on success, false on failure. */ - virtual bool load(Deserializer& in); + virtual bool load(Deserializer& in) = 0; /** Saves the current state of this device to the given Serializer. @@ -132,20 +133,11 @@ public: @param out The serializer device to save to. @return The result of the save. True on success, false on failure. */ - virtual bool save(Serializer& out); + virtual bool save(Serializer& out) = 0; protected: // The OSystem for this sound object OSystem* myOSystem; - - // Indicates if the sound device was successfully initialized - bool myIsInitializedFlag; - - // Indicates the cycle when a sound register was last set - Int32 myLastRegisterSetCycle; - - // Indicates the base framerate depending on whether the ROM is NTSC or PAL - uInt32 myDisplayFrameRate; }; #endif diff --git a/stella/src/gui/AudioDialog.cxx b/stella/src/gui/AudioDialog.cxx index 93b8561b9..1dbcc5078 100644 --- a/stella/src/gui/AudioDialog.cxx +++ b/stella/src/gui/AudioDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: AudioDialog.cxx,v 1.2 2005-03-27 03:07:34 stephena Exp $ +// $Id: AudioDialog.cxx,v 1.3 2005-04-28 19:28:33 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -45,9 +45,9 @@ AudioDialog::AudioDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 : Dialog(osystem, x, y, w, h) { int yoff = 10, - xoff = 10, - woff = _w - 100, - labelWidth = 70; + xoff = 30, + woff = _w - 80, + labelWidth = 80; // Volume myVolumeSlider = new SliderWidget(this, xoff, yoff, woff - 14, kLineHeight, @@ -69,18 +69,17 @@ AudioDialog::AudioDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 yoff += kAudioRowHeight + 4; // Enable sound - new StaticTextWidget(this, xoff+8, yoff+3, 20, kLineHeight, - "(*)", kTextAlignLeft); + new StaticTextWidget(this, xoff+8, yoff+3, 20, kLineHeight, "", kTextAlignLeft); mySoundEnableCheckbox = new CheckboxWidget(this, xoff+28, yoff, woff - 14, kLineHeight, "Enable sound", kSoundEnableChanged); yoff += kAudioRowHeight + 12; // Add a short message about options that need a restart - new StaticTextWidget(this, xoff+30, yoff, 170, kLineHeight, - "* Note that these options take effect", kTextAlignLeft); - yoff += kAudioRowHeight; - new StaticTextWidget(this, xoff+30, yoff, 170, kLineHeight, - "the next time you restart Stella.", kTextAlignLeft); +// new StaticTextWidget(this, xoff+30, yoff, 170, kLineHeight, +// "* Note that these options take effect", kTextAlignLeft); +// yoff += kAudioRowHeight; +// new StaticTextWidget(this, xoff+30, yoff, 170, kLineHeight, +// "the next time you restart Stella.", kTextAlignLeft); // Add Defaults, OK and Cancel buttons addButton( 10, _h - 24, "Defaults", kDefaultsCmd, 0); @@ -132,27 +131,36 @@ void AudioDialog::saveConfig() { string s; uInt32 i; - bool b; + bool b, restart = false; // Volume i = myVolumeSlider->getValue(); - instance()->settings().setInt("volume", i); instance()->sound().setVolume(i); - // Fragsize - // This one requires a complete re-initialization of the sound subsystem, - // so we only do it if the fragsize really has changed + // Fragsize (requires a restart to take effect) i = 1; i <<= (myFragsizePopup->getSelectedTag() + 7); if(instance()->settings().getInt("fragsize") != (Int32)i) { instance()->settings().setInt("fragsize", i); - instance()->sound().initialize(true); // force a re-initialization + restart = true; } - // Enable sound (requires a restart to take effect) // FIXME - let this work without a restart + // Enable/disable sound (requires a restart to take effect) b = mySoundEnableCheckbox->getState(); - instance()->settings().setBool("sound", b); + if(instance()->settings().getBool("sound") != b) + { + instance()->sound().setEnabled(b); + restart = true; + } + + // Only force a re-initialization when necessary, since it can + // be a time-consuming operation + if(restart) + { + instance()->sound().initialize(true); + instance()->sound().mute(true); + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -161,6 +169,7 @@ void AudioDialog::setDefaults() myVolumeSlider->setValue(100); myVolumeLabel->setLabel("100"); +// FIXME - get defaults from OSystem or Settings #ifdef WIN32 myFragsizePopup->setSelectedTag(4); #else diff --git a/stella/src/gui/GameInfoDialog.cxx b/stella/src/gui/GameInfoDialog.cxx index 522e7b021..5993ecff7 100644 --- a/stella/src/gui/GameInfoDialog.cxx +++ b/stella/src/gui/GameInfoDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: GameInfoDialog.cxx,v 1.1 2005-03-27 03:07:34 stephena Exp $ +// $Id: GameInfoDialog.cxx,v 1.2 2005-04-28 19:28:33 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -45,7 +45,7 @@ GameInfoDialog::GameInfoDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, u for(uInt8 i = 0; i < LINES_PER_PAGE; i++) { myKey[i] = new StaticTextWidget(this, 10, 18 + (10 * i), 80, 16, "", kTextAlignLeft); - myDesc[i] = new StaticTextWidget(this, 90, 18 + (10 * i), 210, 16, "", kTextAlignLeft); + myDesc[i] = new StaticTextWidget(this, 90, 18 + (10 * i), 160, 16, "", kTextAlignLeft); } displayInfo(); diff --git a/stella/src/gui/HelpDialog.cxx b/stella/src/gui/HelpDialog.cxx index 8916884a5..59b958bd6 100644 --- a/stella/src/gui/HelpDialog.cxx +++ b/stella/src/gui/HelpDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: HelpDialog.cxx,v 1.1 2005-03-27 03:07:34 stephena Exp $ +// $Id: HelpDialog.cxx,v 1.2 2005-04-28 19:28:33 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -44,7 +44,7 @@ HelpDialog::HelpDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 h) for(uInt8 i = 0; i < LINES_PER_PAGE; i++) { myKey[i] = new StaticTextWidget(this, 10, 18 + (10 * i), 80, 16, "", kTextAlignLeft); - myDesc[i] = new StaticTextWidget(this, 90, 18 + (10 * i), 210, 16, "", kTextAlignLeft); + myDesc[i] = new StaticTextWidget(this, 90, 18 + (10 * i), 160, 16, "", kTextAlignLeft); } displayInfo(); diff --git a/stella/src/gui/OptionsDialog.cxx b/stella/src/gui/OptionsDialog.cxx index 95b85d792..618bee3cd 100644 --- a/stella/src/gui/OptionsDialog.cxx +++ b/stella/src/gui/OptionsDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: OptionsDialog.cxx,v 1.10 2005-04-05 00:40:55 stephena Exp $ +// $Id: OptionsDialog.cxx,v 1.11 2005-04-28 19:28:33 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -78,11 +78,11 @@ OptionsDialog::OptionsDialog(OSystem* osystem) uInt16 x, y, w, h; // Now create all the dialogs attached to each menu button - w = 250; h = 150; + w = 230; h = 150; checkBounds(fbWidth, fbHeight, &x, &y, &w, &h); myVideoDialog = new VideoDialog(myOSystem, x, y, w, h); - w = 220; h = 120; + w = 200; h = 100; checkBounds(fbWidth, fbHeight, &x, &y, &w, &h); myAudioDialog = new AudioDialog(myOSystem, x, y, w, h); diff --git a/stella/src/gui/VideoDialog.cxx b/stella/src/gui/VideoDialog.cxx index 9d50975eb..aa4bdd078 100644 --- a/stella/src/gui/VideoDialog.cxx +++ b/stella/src/gui/VideoDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: VideoDialog.cxx,v 1.5 2005-03-27 03:07:34 stephena Exp $ +// $Id: VideoDialog.cxx,v 1.6 2005-04-28 19:28:33 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -45,8 +45,8 @@ VideoDialog::VideoDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 { int yoff = 10, xoff = 2, - woff = _w - 130, - labelWidth = 65; + woff = 110, + labelWidth = 55; // Video driver (query OSystem for what's supported) myDriverPopup = new PopUpWidget(this, xoff, yoff, woff, kLineHeight, @@ -61,9 +61,11 @@ VideoDialog::VideoDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 // _langPopUp->appendEntry(l->description, l->id); // } +// FIXME - get list of renderers from OSystem +// Also, make these options work without requiring a restart // Video renderer myRendererPopup = new PopUpWidget(this, xoff, yoff, woff, kLineHeight, - "(*)Renderer: ", labelWidth, kRendererChanged); + "Renderer: ", labelWidth, kRendererChanged); myRendererPopup->appendEntry("Software", 1); myRendererPopup->appendEntry("OpenGL", 2); yoff += kVideoRowHeight + 4; @@ -77,9 +79,9 @@ VideoDialog::VideoDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 // Aspect ratio myAspectRatioSlider = new SliderWidget(this, xoff, yoff, woff - 14, kLineHeight, - "(*)GL Aspect: ", labelWidth, kAspectRatioChanged); + "GL Aspect: ", labelWidth, kAspectRatioChanged); myAspectRatioSlider->setMinValue(1); myAspectRatioSlider->setMaxValue(100); - myAspectRatioLabel = new StaticTextWidget(this, xoff + woff - 11, yoff, 24, kLineHeight, + myAspectRatioLabel = new StaticTextWidget(this, xoff + woff - 11, yoff, 15, kLineHeight, "", kTextAlignLeft); myAspectRatioLabel->setFlags(WIDGET_CLEARBG); yoff += kVideoRowHeight + 4; @@ -96,36 +98,36 @@ VideoDialog::VideoDialog(OSystem* osystem, uInt16 x, uInt16 y, uInt16 w, uInt16 xoff = xoff + 115; // Framerate - myFrameRateSlider = new SliderWidget(this, xoff, yoff, woff - 14, kLineHeight, + myFrameRateSlider = new SliderWidget(this, xoff, yoff, woff - 25, kLineHeight, "Framerate: ", labelWidth, kFrameRateChanged); myFrameRateSlider->setMinValue(1); myFrameRateSlider->setMaxValue(300); - myFrameRateLabel = new StaticTextWidget(this, xoff + woff - 11, yoff, 20, kLineHeight, + myFrameRateLabel = new StaticTextWidget(this, xoff + woff - 22, yoff, 20, kLineHeight, "", kTextAlignLeft); myFrameRateLabel->setFlags(WIDGET_CLEARBG); yoff += kVideoRowHeight + 4; // Zoom level - myZoomSlider = new SliderWidget(this, xoff, yoff, woff - 14, kLineHeight, + myZoomSlider = new SliderWidget(this, xoff, yoff, woff - 25, kLineHeight, "Zoom: ", labelWidth, kZoomChanged); myZoomSlider->setMinValue(0); myZoomSlider->setMaxValue(50); - myZoomLabel = new StaticTextWidget(this, xoff + woff - 11, yoff, 20, kLineHeight, + myZoomLabel = new StaticTextWidget(this, xoff + woff - 22, yoff, 20, kLineHeight, "", kTextAlignLeft); myZoomLabel->setFlags(WIDGET_CLEARBG); yoff += kVideoRowHeight + 10; - myFullscreenCheckbox = new CheckboxWidget(this, xoff + 25, yoff, woff - 14, kLineHeight, + myFullscreenCheckbox = new CheckboxWidget(this, xoff + 5, yoff, woff - 14, kLineHeight, "Fullscreen mode"); yoff += kVideoRowHeight + 4; - myUseDeskResCheckbox = new CheckboxWidget(this, xoff + 25, yoff, woff - 14, kLineHeight, + myUseDeskResCheckbox = new CheckboxWidget(this, xoff + 5, yoff, woff - 14, kLineHeight, "Desktop Res in FS"); yoff += kVideoRowHeight + 20; // Add a short message about options that need a restart - new StaticTextWidget(this, xoff-40, yoff, 170, kLineHeight, + new StaticTextWidget(this, _w - 175, yoff, 170, kLineHeight, "* Note that these options take effect", kTextAlignLeft); yoff += kVideoRowHeight; - new StaticTextWidget(this, xoff-40, yoff, 170, kLineHeight, + new StaticTextWidget(this, _w - 175, yoff, 170, kLineHeight, "the next time you restart Stella.", kTextAlignLeft); // Add Defaults, OK and Cancel buttons