From 9c42f793924386c41c8514b47823cfe012500516 Mon Sep 17 00:00:00 2001 From: stephena <stephena@8b62c5a3-ac7e-4cc8-8f21-d9a121418aba> Date: Mon, 21 Feb 2005 20:43:53 +0000 Subject: [PATCH] More huge code reorganizations. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@368 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- stella/src/build/makefile | 6 +- stella/src/common/FrameBufferSoft.cxx | 6 +- stella/src/common/FrameBufferSoft.hxx | 8 ++- stella/src/common/mainSDL.cxx | 54 ++++++++-------- stella/src/emucore/Console.cxx | 84 ++++++++++++------------ stella/src/emucore/Console.hxx | 12 ++-- stella/src/emucore/EventHandler.cxx | 68 ++++++++++---------- stella/src/emucore/EventHandler.hxx | 10 +-- stella/src/emucore/FrameBuffer.cxx | 11 ++-- stella/src/emucore/FrameBuffer.hxx | 9 ++- stella/src/emucore/OSystem.cxx | 15 +---- stella/src/emucore/OSystem.hxx | 85 +++++++++++++++++-------- stella/src/emucore/Settings.cxx | 10 ++- stella/src/emucore/Settings.hxx | 6 +- stella/src/emucore/TIA.cxx | 19 +++--- stella/src/emucore/TIA.hxx | 19 +++--- stella/src/emucore/m6502/src/System.cxx | 3 +- stella/src/unix/OSystemUNIX.cxx | 6 +- stella/src/unix/OSystemUNIX.hxx | 12 +--- stella/src/unix/SettingsUNIX.cxx | 5 +- stella/src/unix/SettingsUNIX.hxx | 8 ++- 21 files changed, 242 insertions(+), 214 deletions(-) diff --git a/stella/src/build/makefile b/stella/src/build/makefile index 7ef94a07d..68f25d6cf 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.59 2005-02-21 02:23:47 stephena Exp $ +## $Id: makefile,v 1.60 2005-02-21 20:41:04 stephena Exp $ ##============================================================================ ##============================================================================ @@ -32,7 +32,7 @@ OPTIMIZATIONS = ### to include support for saving snapshots in png format ### (requires PNG library) - SNAPSHOT_SUPPORT = 1 +# SNAPSHOT_SUPPORT = 1 ### to include support for game developers ### enables some extra commandline options that allow the user @@ -41,7 +41,7 @@ OPTIMIZATIONS = ### to build on SMP (or distcc-based) machines ### change to number of CPU's you have - NUMBER_CPU = 1 + NUMBER_CPU = 3 ##============================================================================ ## All done, type make to get a list of frontends diff --git a/stella/src/common/FrameBufferSoft.cxx b/stella/src/common/FrameBufferSoft.cxx index 55c58fd51..d05738e81 100644 --- a/stella/src/common/FrameBufferSoft.cxx +++ b/stella/src/common/FrameBufferSoft.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: FrameBufferSoft.cxx,v 1.7 2005-02-21 02:23:48 stephena Exp $ +// $Id: FrameBufferSoft.cxx,v 1.8 2005-02-21 20:41:18 stephena Exp $ //============================================================================ #include <SDL.h> @@ -28,8 +28,8 @@ #include "OSystem.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FrameBufferSoft::FrameBufferSoft() - : FrameBuffer() +FrameBufferSoft::FrameBufferSoft(OSystem* osystem) + : FrameBuffer(osystem) { } diff --git a/stella/src/common/FrameBufferSoft.hxx b/stella/src/common/FrameBufferSoft.hxx index 72918d3a7..d91f781d0 100644 --- a/stella/src/common/FrameBufferSoft.hxx +++ b/stella/src/common/FrameBufferSoft.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: FrameBufferSoft.hxx,v 1.5 2005-02-21 02:23:48 stephena Exp $ +// $Id: FrameBufferSoft.hxx,v 1.6 2005-02-21 20:41:19 stephena Exp $ //============================================================================ #ifndef FRAMEBUFFER_SOFT_HXX @@ -22,6 +22,8 @@ #include <SDL.h> #include <SDL_syswm.h> +class OSystem; + #include "bspf.hxx" #include "FrameBuffer.hxx" @@ -32,7 +34,7 @@ class RectList; This class implements an SDL software framebuffer. @author Stephen Anthony - @version $Id: FrameBufferSoft.hxx,v 1.5 2005-02-21 02:23:48 stephena Exp $ + @version $Id: FrameBufferSoft.hxx,v 1.6 2005-02-21 20:41:19 stephena Exp $ */ class FrameBufferSoft : public FrameBuffer { @@ -40,7 +42,7 @@ class FrameBufferSoft : public FrameBuffer /** Creates a new software framebuffer */ - FrameBufferSoft(); + FrameBufferSoft(OSystem* osystem); /** Destructor diff --git a/stella/src/common/mainSDL.cxx b/stella/src/common/mainSDL.cxx index bd3c6a482..63dca71e2 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.21 2005-02-21 02:23:48 stephena Exp $ +// $Id: mainSDL.cxx,v 1.22 2005-02-21 20:41:20 stephena Exp $ //============================================================================ #include <fstream> @@ -121,6 +121,9 @@ static Event::Type Paddle_Button[4] = { // Pointer to the main parent osystem object or the null pointer static OSystem* theOSystem = (OSystem*) NULL; +// Pointer to the display object or the null pointer +static EventHandler* theEventHandler = (EventHandler*) NULL; + // Pointer to the display object or the null pointer static FrameBuffer* theDisplay = (FrameBuffer*) NULL; @@ -804,18 +807,21 @@ void Cleanup() } #endif - if(theOSystem) - delete theOSystem; -/* - if(theConsole) - delete theConsole; - if(theSound) delete theSound; if(theDisplay) delete theDisplay; -*/ + + if(theEventHandler) + delete theEventHandler; + + if(theOSystem) + { + theOSystem->detachConsole(); + delete theOSystem; + } + if(SDL_WasInit(SDL_INIT_VIDEO) & SDL_INIT_VIDEO) SDL_Quit(); } @@ -826,10 +832,13 @@ int main(int argc, char* argv[]) { uInt8* image = NULL; + // Create the parent OSystem object and settings #if defined(UNIX) - theSettings = new SettingsUNIX(); + theOSystem = new OSystemUNIX(); + theSettings = new SettingsUNIX(theOSystem); #elif defined(WIN32) - theSettings = new SettingsWin32(); + theOSystem = new OSystemWin32(); + theSettings = new SettingsWin32(theOSystem); #else #error Unsupported platform! #endif @@ -847,6 +856,9 @@ int main(int argc, char* argv[]) return 0; } + // Create the event handler for the system + theEventHandler = new EventHandler(theOSystem); + // Cache some settings so they don't have to be repeatedly searched for thePaddleMode = theSettings->getInt("paddle"); theShowInfoFlag = theSettings->getBool("showinfo"); @@ -856,6 +868,7 @@ int main(int argc, char* argv[]) // Create a properties set for us to use and set it up PropertiesSet propertiesSet; SetupProperties(propertiesSet); + theOSystem->attach(&propertiesSet); // Check to see if the 'listroms' argument was given // If so, list the roms and immediately exit @@ -885,7 +898,7 @@ int main(int argc, char* argv[]) string videodriver = theSettings->getString("video"); if(videodriver == "soft") { - theDisplay = new FrameBufferSoft(); + theDisplay = new FrameBufferSoft(theOSystem); } #ifdef DISPLAY_OPENGL else if(videodriver == "gl") @@ -896,7 +909,7 @@ int main(int argc, char* argv[]) #endif else // a driver that doesn't exist was requested, so use software mode { - theDisplay = new FrameBufferSoft(); + theDisplay = new FrameBufferSoft(theOSystem); } if(!theDisplay) @@ -927,15 +940,6 @@ int main(int argc, char* argv[]) ShowInfo("Sound disabled"); } - // Create the parent OSystem object -#if defined(UNIX) - theOSystem = new OSystemUNIX(*theDisplay, *theSound, *theSettings, propertiesSet); -#elif defined(WIN32) - theSettings = new SettingsWin32(); -#else - #error Unsupported platform! -#endif - // Get a pointer to the file which contains the cartridge ROM const char* file = argv[argc - 1]; @@ -953,12 +957,10 @@ int main(int argc, char* argv[]) uInt32 size = in.gcount(); in.close(); - // Get just the filename of the file containing the ROM image - const char* filename = (!strrchr(file, '/')) ? file : strrchr(file, '/') + 1; - // Create the 2600 game console -// theConsole = new Console(image, size, filename, *theSettings, propertiesSet, -// *theDisplay, *theSound); + Console* theConsole = new Console(image, size, theOSystem); + +cerr << "got here\n"; // Free the image since we don't need it any longer delete[] image; diff --git a/stella/src/emucore/Console.cxx b/stella/src/emucore/Console.cxx index 906fb3440..fcb10111d 100644 --- a/stella/src/emucore/Console.cxx +++ b/stella/src/emucore/Console.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: Console.cxx,v 1.39 2005-02-21 02:23:49 stephena Exp $ +// $Id: Console.cxx,v 1.40 2005-02-21 20:41:24 stephena Exp $ //============================================================================ #include <assert.h> @@ -51,8 +51,7 @@ #endif // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Console::Console(const uInt8* image, uInt32 size, const char* filename, - OSystem& osystem) +Console::Console(const uInt8* image, uInt32 size, OSystem* osystem) : myOSystem(osystem) { myControllers[0] = 0; @@ -63,16 +62,16 @@ Console::Console(const uInt8* image, uInt32 size, const char* filename, myEvent = 0; // Add the current console to the system - myOSystem.addConsole(this); + myOSystem->attach(this); // Attach the event subsystem to the current console - myEvent = myOSystem.eventHandler().event(); + myEvent = myOSystem->eventHandler().event(); // Get the MD5 message-digest for the ROM image string md5 = MD5(image, size); // Search for the properties based on MD5 - myOSystem.propSet().getMD5(md5, myProperties); + myOSystem->propSet().getMD5(md5, myProperties); // Make sure the MD5 value of the cartridge is set in the properties if(myProperties.get("Cartridge.MD5") == "") @@ -143,7 +142,7 @@ Console::Console(const uInt8* image, uInt32 size, const char* filename, } M6532* m6532 = new M6532(*this); - TIA* tia = new TIA(myOSystem); + TIA* tia = new TIA(*this, myOSystem->sound(), myOSystem->settings()); Cartridge* cartridge = Cartridge::create(image, size, myProperties); mySystem->attach(m6502); @@ -160,27 +159,26 @@ Console::Console(const uInt8* image, uInt32 size, const char* filename, // Set the correct framerate based on the format of the ROM // This can be overridden by the '-framerate' option myFrameRate = 60; - if(myOSystem.settings().getInt("framerate") > 0) - myFrameRate = myOSystem.settings().getInt("framerate"); + if(myOSystem->settings().getInt("framerate") > 0) + myFrameRate = myOSystem->settings().getInt("framerate"); // else if(myProperties.get("Display.Format") == "NTSC") // myFrameRate = 60; // else if(myProperties.get("Display.Format") == "PAL") // myFrameRate = 50; // mySettings.setInt("framerate", myFrameRate, false); - myOSystem.settings().setInt("framerate", myFrameRate); + myOSystem->settings().setInt("framerate", myFrameRate); // Initialize the framebuffer interface. // This must be done *after* a reset, since it needs updated values. ostringstream title; title << "Stella: \"" << myProperties.get("Cartridge.Name") << "\""; - myOSystem.frameBuffer().initialize(&myOSystem, - title.str(), + myOSystem->frameBuffer().initialize(title.str(), myMediaSource->width() << 1, myMediaSource->height()); // Initialize the sound interface. uInt32 soundFrameRate = (myProperties.get("Display.Format") == "PAL") ? 50 : 60; - myOSystem.sound().initialize(&myOSystem, mySystem, soundFrameRate); + myOSystem->sound().initialize(myOSystem, mySystem, soundFrameRate); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -224,40 +222,40 @@ void Console::toggleFormat() { myProperties.set("Display.Format", "PAL"); mySystem->reset(); - myOSystem.frameBuffer().showMessage("PAL Mode"); + myOSystem->frameBuffer().showMessage("PAL Mode"); } else if(format == "PAL") { myProperties.set("Display.Format", "NTSC"); mySystem->reset(); - myOSystem.frameBuffer().showMessage("NTSC Mode"); + myOSystem->frameBuffer().showMessage("NTSC Mode"); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::togglePalette() { - string type = myOSystem.settings().getString("palette"); + string type = myOSystem->settings().getString("palette"); if(type == "standard") // switch to original { - myOSystem.frameBuffer().showMessage("Original Stella colors"); - myOSystem.settings().setString("palette", "original"); + myOSystem->frameBuffer().showMessage("Original Stella colors"); + myOSystem->settings().setString("palette", "original"); } else if(type == "original") // switch to z26 { - myOSystem.frameBuffer().showMessage("Z26 colors"); - myOSystem.settings().setString("palette", "z26"); + myOSystem->frameBuffer().showMessage("Z26 colors"); + myOSystem->settings().setString("palette", "z26"); } else if(type == "z26") // switch to standard { - myOSystem.frameBuffer().showMessage("Standard Stella colors"); - myOSystem.settings().setString("palette", "standard"); + myOSystem->frameBuffer().showMessage("Standard Stella colors"); + myOSystem->settings().setString("palette", "standard"); } else // switch to standard mode if we get this far { - myOSystem.frameBuffer().showMessage("Standard Stella colors"); - myOSystem.settings().setString("palette", "standard"); + myOSystem->frameBuffer().showMessage("Standard Stella colors"); + myOSystem->settings().setString("palette", "standard"); } } @@ -267,10 +265,10 @@ void Console::saveProperties(string filename, bool merge) // Merge the current properties into the PropertiesSet file if(merge) { - if(myOSystem.propSet().merge(myProperties, filename)) - myOSystem.frameBuffer().showMessage("Properties merged"); + if(myOSystem->propSet().merge(myProperties, filename)) + myOSystem->frameBuffer().showMessage("Properties merged"); else - myOSystem.frameBuffer().showMessage("Properties not merged"); + myOSystem->frameBuffer().showMessage("Properties not merged"); } else // Save to the specified file directly { @@ -280,11 +278,11 @@ void Console::saveProperties(string filename, bool merge) { myProperties.save(out); out.close(); - myOSystem.frameBuffer().showMessage("Properties saved"); + myOSystem->frameBuffer().showMessage("Properties saved"); } else { - myOSystem.frameBuffer().showMessage("Properties not saved"); + myOSystem->frameBuffer().showMessage("Properties not saved"); } } } @@ -303,12 +301,12 @@ void Console::changeXStart(const uInt32 direction) xstart += 4; if(xstart > 80) { - myOSystem.frameBuffer().showMessage("XStart at maximum"); + myOSystem->frameBuffer().showMessage("XStart at maximum"); return; } else if((width + xstart) > 160) { - myOSystem.frameBuffer().showMessage("XStart no effect"); + myOSystem->frameBuffer().showMessage("XStart no effect"); return; } } @@ -317,7 +315,7 @@ void Console::changeXStart(const uInt32 direction) xstart -= 4; if(xstart < 0) { - myOSystem.frameBuffer().showMessage("XStart at minimum"); + myOSystem->frameBuffer().showMessage("XStart at minimum"); return; } } @@ -328,7 +326,7 @@ void Console::changeXStart(const uInt32 direction) message = "XStart "; message += strval.str(); - myOSystem.frameBuffer().showMessage(message); + myOSystem->frameBuffer().showMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -343,7 +341,7 @@ void Console::changeYStart(const uInt32 direction) ystart++; if(ystart > 64) { - myOSystem.frameBuffer().showMessage("YStart at maximum"); + myOSystem->frameBuffer().showMessage("YStart at maximum"); return; } } @@ -352,7 +350,7 @@ void Console::changeYStart(const uInt32 direction) ystart--; if(ystart < 0) { - myOSystem.frameBuffer().showMessage("YStart at minimum"); + myOSystem->frameBuffer().showMessage("YStart at minimum"); return; } } @@ -363,7 +361,7 @@ void Console::changeYStart(const uInt32 direction) message = "YStart "; message += strval.str(); - myOSystem.frameBuffer().showMessage(message); + myOSystem->frameBuffer().showMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -379,12 +377,12 @@ void Console::changeWidth(const uInt32 direction) width += 4; if((width > 160) || ((width % 4) != 0)) { - myOSystem.frameBuffer().showMessage("Width at maximum"); + myOSystem->frameBuffer().showMessage("Width at maximum"); return; } else if((width + xstart) > 160) { - myOSystem.frameBuffer().showMessage("Width no effect"); + myOSystem->frameBuffer().showMessage("Width no effect"); return; } } @@ -393,7 +391,7 @@ void Console::changeWidth(const uInt32 direction) width -= 4; if(width < 80) { - myOSystem.frameBuffer().showMessage("Width at minimum"); + myOSystem->frameBuffer().showMessage("Width at minimum"); return; } } @@ -404,7 +402,7 @@ void Console::changeWidth(const uInt32 direction) message = "Width "; message += strval.str(); - myOSystem.frameBuffer().showMessage(message); + myOSystem->frameBuffer().showMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -419,7 +417,7 @@ void Console::changeHeight(const uInt32 direction) height++; if(height > 256) { - myOSystem.frameBuffer().showMessage("Height at maximum"); + myOSystem->frameBuffer().showMessage("Height at maximum"); return; } } @@ -428,7 +426,7 @@ void Console::changeHeight(const uInt32 direction) height--; if(height < 100) { - myOSystem.frameBuffer().showMessage("Height at minimum"); + myOSystem->frameBuffer().showMessage("Height at minimum"); return; } } @@ -439,6 +437,6 @@ void Console::changeHeight(const uInt32 direction) message = "Height "; message += strval.str(); - myOSystem.frameBuffer().showMessage(message); + myOSystem->frameBuffer().showMessage(message); } #endif diff --git a/stella/src/emucore/Console.hxx b/stella/src/emucore/Console.hxx index 6bc9e041c..ba58e82af 100644 --- a/stella/src/emucore/Console.hxx +++ b/stella/src/emucore/Console.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: Console.hxx,v 1.23 2005-02-21 02:23:49 stephena Exp $ +// $Id: Console.hxx,v 1.24 2005-02-21 20:41:26 stephena Exp $ //============================================================================ #ifndef CONSOLE_HXX @@ -36,7 +36,7 @@ class OSystem; This class represents the entire game console. @author Bradford W. Mott - @version $Id: Console.hxx,v 1.23 2005-02-21 02:23:49 stephena Exp $ + @version $Id: Console.hxx,v 1.24 2005-02-21 20:41:26 stephena Exp $ */ class Console { @@ -47,11 +47,9 @@ class Console @param image The ROM image of the game to emulate @param size The size of the ROM image - @param filename The name of the file that contained the ROM image @param osystem The OSystem object to use */ - Console(const uInt8* image, uInt32 size, const char* filename, - OSystem& osystem); + Console(const uInt8* image, uInt32 size, OSystem* osystem); /** Create a new console object by copying another one @@ -177,8 +175,8 @@ class Console #endif private: - // Reference to the osystem object - OSystem& myOSystem; + // Pointer to the osystem object + OSystem* myOSystem; // Pointers to the left and right controllers Controller* myControllers[2]; diff --git a/stella/src/emucore/EventHandler.cxx b/stella/src/emucore/EventHandler.cxx index e0eacfe55..1d9f3e679 100644 --- a/stella/src/emucore/EventHandler.cxx +++ b/stella/src/emucore/EventHandler.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: EventHandler.cxx,v 1.31 2005-02-21 02:23:49 stephena Exp $ +// $Id: EventHandler.cxx,v 1.32 2005-02-21 20:42:07 stephena Exp $ //============================================================================ #include <algorithm> @@ -34,7 +34,7 @@ #endif // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -EventHandler::EventHandler(OSystem& osystem) +EventHandler::EventHandler(OSystem* osystem) : myOSystem(osystem), myCurrentState(0), myPauseStatus(false), @@ -42,6 +42,10 @@ EventHandler::EventHandler(OSystem& osystem) myMenuStatus(false), myRemapEnabledFlag(true) { +cerr << "EventHandler::EventHandler()\n"; + // Add this eventhandler object to the OSystem + myOSystem->attach(this); + // Create the event object which will be used for this handler myEvent = new Event(); @@ -90,14 +94,14 @@ void EventHandler::sendKeyEvent(StellaEvent::KeyCode key, Int32 state) if(myRemapEnabledFlag && key == StellaEvent::KCODE_TAB && state == 1 && !myPauseStatus) { myMenuStatus = !myMenuStatus; - myOSystem.frameBuffer().showMenu(myMenuStatus); - myOSystem.sound().mute(myMenuStatus); + myOSystem->frameBuffer().showMenu(myMenuStatus); + myOSystem->sound().mute(myMenuStatus); return; } // Determine where the event should be sent if(myMenuStatus) - myOSystem.frameBuffer().sendKeyEvent(key, state); + myOSystem->frameBuffer().sendKeyEvent(key, state); else sendEvent(myKeyTable[key], state); } @@ -108,7 +112,7 @@ void EventHandler::sendJoyEvent(StellaEvent::JoyStick stick, { // Determine where the event should be sent if(myMenuStatus) - myOSystem.frameBuffer().sendJoyEvent(stick, code, state); + myOSystem->frameBuffer().sendJoyEvent(stick, code, state); else sendEvent(myJoyTable[stick*StellaEvent::LastJCODE + code], state); } @@ -147,19 +151,19 @@ void EventHandler::sendEvent(Event::Type event, Int32 state) else if(event == Event::Pause) { myPauseStatus = !myPauseStatus; - myOSystem.frameBuffer().pause(myPauseStatus); - myOSystem.sound().mute(myPauseStatus); + myOSystem->frameBuffer().pause(myPauseStatus); + myOSystem->sound().mute(myPauseStatus); return; } else if(event == Event::Quit) { myQuitStatus = !myQuitStatus; - myOSystem.settings().saveConfig(); + myOSystem->settings().saveConfig(); return; } if(ourMessageTable[event] != "") - myOSystem.frameBuffer().showMessage(ourMessageTable[event]); + myOSystem->frameBuffer().showMessage(ourMessageTable[event]); } // Otherwise, pass it to the emulation core @@ -171,7 +175,7 @@ void EventHandler::setKeymap() { // Since istringstream swallows whitespace, we have to make the // delimiters be spaces - string list = myOSystem.settings().getString("keymap"); + string list = myOSystem->settings().getString("keymap"); replace(list.begin(), list.end(), ':', ' '); if(isValidList(list, StellaEvent::LastKCODE)) @@ -195,7 +199,7 @@ void EventHandler::setJoymap() { // Since istringstream swallows whitespace, we have to make the // delimiters be spaces - string list = myOSystem.settings().getString("joymap"); + string list = myOSystem->settings().getString("joymap"); replace(list.begin(), list.end(), ':', ' '); if(isValidList(list, StellaEvent::LastJSTICK*StellaEvent::LastJCODE)) @@ -339,9 +343,9 @@ bool EventHandler::isValidList(string list, uInt32 length) void EventHandler::saveState() { // Do a state save using the System - string md5 = myOSystem.console().properties().get("Cartridge.MD5"); - string filename = myOSystem.stateFilename(md5, myCurrentState); - int result = myOSystem.console().system().saveState(filename, md5); + string md5 = myOSystem->console().properties().get("Cartridge.MD5"); + string filename = myOSystem->stateFilename(md5, myCurrentState); + int result = myOSystem->console().system().saveState(filename, md5); // Print appropriate message ostringstream buf; @@ -352,7 +356,7 @@ void EventHandler::saveState() else if(result == 3) buf << "Invalid state " << myCurrentState << " file"; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem->frameBuffer().showMessage(buf.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -367,16 +371,16 @@ void EventHandler::changeState() ostringstream buf; buf << "Changed to slot " << myCurrentState; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem->frameBuffer().showMessage(buf.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventHandler::loadState() { // Do a state save using the System - string md5 = myOSystem.console().properties().get("Cartridge.MD5"); - string filename = myOSystem.stateFilename(md5, myCurrentState); - int result = myOSystem.console().system().loadState(filename, md5); + string md5 = myOSystem->console().properties().get("Cartridge.MD5"); + string filename = myOSystem->stateFilename(md5, myCurrentState); + int result = myOSystem->console().system().loadState(filename, md5); // Print appropriate message ostringstream buf; @@ -387,7 +391,7 @@ void EventHandler::loadState() else if(result == 3) buf << "Invalid state " << myCurrentState << " file"; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem->frameBuffer().showMessage(buf.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -396,30 +400,30 @@ void EventHandler::takeSnapshot() #ifdef SNAPSHOT_SUPPORT // Figure out the correct snapshot name string filename; - string sspath = myOSystem.settings().getString("ssdir"); - string ssname = myOSystem.settings().getString("ssname"); + string sspath = myOSystem->settings().getString("ssdir"); + string ssname = myOSystem->settings().getString("ssname"); if(ssname == "romname") sspath = sspath + BSPF_PATH_SEPARATOR + - myOSystem.console().properties().get("Cartridge.Name"); + myOSystem->console().properties().get("Cartridge.Name"); else if(ssname == "md5sum") sspath = sspath + BSPF_PATH_SEPARATOR + - myOSystem.console().properties().get("Cartridge.MD5"); + myOSystem->console().properties().get("Cartridge.MD5"); // Check whether we want multiple snapshots created - if(!myOSystem.settings().getBool("sssingle")) + if(!myOSystem->settings().getBool("sssingle")) { // Determine if the file already exists, checking each successive filename // until one doesn't exist filename = sspath + ".png"; - if(myOSystem.fileExists(filename)) + if(myOSystem->fileExists(filename)) { ostringstream buf; for(uInt32 i = 1; ;++i) { buf.str(""); buf << sspath << "_" << i << ".png"; - if(!myOSystem.fileExists(buf.str())) + if(!myOSystem->fileExists(buf.str())) break; } filename = buf.str(); @@ -429,11 +433,11 @@ void EventHandler::takeSnapshot() filename = sspath + ".png"; // Now create a Snapshot object and save the PNG - myOSystem.frameBuffer().refresh(true); - Snapshot snapshot(myOSystem.frameBuffer()); + myOSystem->frameBuffer().refresh(true); + Snapshot snapshot(myOSystem->frameBuffer()); string result = snapshot.savePNG(filename); - myOSystem.frameBuffer().showMessage(result); + myOSystem->frameBuffer().showMessage(result); #else - myOSystem.frameBuffer().showMessage("Snapshots unsupported"); + myOSystem->frameBuffer().showMessage("Snapshots unsupported"); #endif } diff --git a/stella/src/emucore/EventHandler.hxx b/stella/src/emucore/EventHandler.hxx index 5ae2483d0..23b55f86a 100644 --- a/stella/src/emucore/EventHandler.hxx +++ b/stella/src/emucore/EventHandler.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: EventHandler.hxx,v 1.15 2005-02-21 02:23:49 stephena Exp $ +// $Id: EventHandler.hxx,v 1.16 2005-02-21 20:42:21 stephena Exp $ //============================================================================ #ifndef EVENTHANDLER_HXX @@ -40,7 +40,7 @@ class OSystem; mapping can take place. @author Stephen Anthony - @version $Id: EventHandler.hxx,v 1.15 2005-02-21 02:23:49 stephena Exp $ + @version $Id: EventHandler.hxx,v 1.16 2005-02-21 20:42:21 stephena Exp $ */ class EventHandler { @@ -48,7 +48,7 @@ class EventHandler /** Create a new event handler object */ - EventHandler(OSystem& osystem); + EventHandler(OSystem* osystem); /** Destructor @@ -123,8 +123,8 @@ class EventHandler void takeSnapshot(); private: - // Global Console object - OSystem& myOSystem; + // Global OSystem object + OSystem* myOSystem; // Array of key events Event::Type myKeyTable[StellaEvent::LastKCODE]; diff --git a/stella/src/emucore/FrameBuffer.cxx b/stella/src/emucore/FrameBuffer.cxx index edefb2222..25c081b90 100644 --- a/stella/src/emucore/FrameBuffer.cxx +++ b/stella/src/emucore/FrameBuffer.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: FrameBuffer.cxx,v 1.13 2005-02-21 02:23:49 stephena Exp $ +// $Id: FrameBuffer.cxx,v 1.14 2005-02-21 20:42:38 stephena Exp $ //============================================================================ #include <sstream> @@ -47,8 +47,8 @@ #define RIGHTMARKER 16 // Indicates item being remapped // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FrameBuffer::FrameBuffer() - : myOSystem(0), +FrameBuffer::FrameBuffer(OSystem* osystem) + : myOSystem(osystem), myWidth(0), myHeight(0), theRedrawEntireFrameIndicator(true), @@ -81,6 +81,7 @@ FrameBuffer::FrameBuffer() myMenuRedraws(2), myInfoMenuWidth(0) { + myOSystem->attach(this); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -89,10 +90,8 @@ FrameBuffer::~FrameBuffer(void) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void FrameBuffer::initialize(OSystem* osystem, const string title, - uInt32 width, uInt32 height) +void FrameBuffer::initialize(const string title, uInt32 width, uInt32 height) { - myOSystem = osystem; myWidth = width; myHeight = height; diff --git a/stella/src/emucore/FrameBuffer.hxx b/stella/src/emucore/FrameBuffer.hxx index 12fdfd83b..92f35aac0 100644 --- a/stella/src/emucore/FrameBuffer.hxx +++ b/stella/src/emucore/FrameBuffer.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: FrameBuffer.hxx,v 1.14 2005-02-21 02:23:49 stephena Exp $ +// $Id: FrameBuffer.hxx,v 1.15 2005-02-21 20:43:10 stephena Exp $ //============================================================================ #ifndef FRAMEBUFFER_HXX @@ -39,7 +39,7 @@ FIXME This class also implements a MAME-like user interface where Stella settin can be changed. @author Stephen Anthony - @version $Id: FrameBuffer.hxx,v 1.14 2005-02-21 02:23:49 stephena Exp $ + @version $Id: FrameBuffer.hxx,v 1.15 2005-02-21 20:43:10 stephena Exp $ */ class FrameBuffer { @@ -47,7 +47,7 @@ class FrameBuffer /** Creates a new Frame Buffer */ - FrameBuffer(); + FrameBuffer(OSystem* osystem); /** Destructor @@ -58,12 +58,11 @@ class FrameBuffer Initializes the framebuffer display. This must be called before any calls are made to derived methods. - @param osystem The parent osystem @param title The title of the window @param width The width of the framebuffer @param height The height of the framebuffer */ - void initialize(OSystem* osystem, const string title, uInt32 width, uInt32 height); + void initialize(const string title, uInt32 width, uInt32 height); /** Updates the display, which depending on the current mode could mean diff --git a/stella/src/emucore/OSystem.cxx b/stella/src/emucore/OSystem.cxx index 14cbe90a4..ed2a89a2d 100644 --- a/stella/src/emucore/OSystem.cxx +++ b/stella/src/emucore/OSystem.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: OSystem.cxx,v 1.1 2005-02-21 02:23:49 stephena Exp $ +// $Id: OSystem.cxx,v 1.2 2005-02-21 20:43:20 stephena Exp $ //============================================================================ #include <cassert> @@ -29,15 +29,8 @@ #include "OSystem.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -OSystem::OSystem(FrameBuffer& framebuffer, Sound& sound, - Settings& settings, PropertiesSet& propset) - : myFrameBuffer(framebuffer), - mySound(sound), - mySettings(settings), - myPropSet(propset) +OSystem::OSystem() { - // Create an event handler which will collect and dispatch events - myEventHandler = new EventHandler(*this); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -53,10 +46,6 @@ void OSystem::update() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OSystem::OSystem(const OSystem& osystem) - : myFrameBuffer(osystem.myFrameBuffer), - mySound(osystem.mySound), - mySettings(osystem.mySettings), - myPropSet(osystem.myPropSet) { } diff --git a/stella/src/emucore/OSystem.hxx b/stella/src/emucore/OSystem.hxx index d819c9003..7bec499b4 100644 --- a/stella/src/emucore/OSystem.hxx +++ b/stella/src/emucore/OSystem.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: OSystem.hxx,v 1.1 2005-02-21 02:23:49 stephena Exp $ +// $Id: OSystem.hxx,v 1.2 2005-02-21 20:43:20 stephena Exp $ //============================================================================ #ifndef OSYSTEM_HXX @@ -35,7 +35,7 @@ class PropertiesSet; other objects belong. @author Stephen Anthony - @version $Id: OSystem.hxx,v 1.1 2005-02-21 02:23:49 stephena Exp $ + @version $Id: OSystem.hxx,v 1.2 2005-02-21 20:43:20 stephena Exp $ */ class OSystem { @@ -43,8 +43,7 @@ class OSystem /** Create a new OSystem abstract class */ - OSystem(FrameBuffer& framebuffer, Sound& sound, - Settings& settings, PropertiesSet& propset); + OSystem(); /** Destructor @@ -58,24 +57,52 @@ class OSystem */ void update(); + /** + Adds the specified eventhandler to the system. + + @param eventhandler The eventhandler to add + */ + void attach(EventHandler* eventhandler) { myEventHandler = eventhandler; } + + /** + Adds the specified framebuffer to the system. + + @param framebuffer The framebuffer to add + */ + void attach(FrameBuffer* framebuffer) { myFrameBuffer = framebuffer; } + + /** + Adds the specified sound device to the system. + + @param sound The sound device to add + */ + void attach(Sound* sound) { mySound = sound; } + + /** + Adds the specified settings object to the system. + + @param settings The settings object to add + */ + void attach(Settings* settings) { mySettings = settings; } + + /** + Adds the specified game properties set to the system. + + @param propset The properties set to add + */ + void attach(PropertiesSet* propset) { myPropSet = propset; } + /** Adds the specified console to the system. @param console The console (game emulation object) to add */ - void addConsole(Console* console) { myConsole = console; } + void attach(Console* console) { myConsole = console; } /** Removes the currently attached console from the system. */ - void removeConsole(void) { delete myConsole; myConsole = NULL; } - - /** - Get the console of the system. - - @return The console object - */ - Console& console(void) const { return *myConsole; } + void detachConsole(void) { delete myConsole; myConsole = NULL; } /** Get the event handler of the system @@ -89,35 +116,41 @@ class OSystem @return The frame buffer */ - FrameBuffer& frameBuffer() const { return myFrameBuffer; } + FrameBuffer& frameBuffer() const { return *myFrameBuffer; } /** Get the sound object of the system @return The sound object */ - Sound& sound() const { return mySound; } + Sound& sound() const { return *mySound; } /** Get the settings object of the system @return The settings object */ - Settings& settings() const { return mySettings; } + Settings& settings() const { return *mySettings; } /** Get the set of game properties for the system @return The properties set object */ - PropertiesSet& propSet() const { return myPropSet; } + PropertiesSet& propSet() const { return *myPropSet; } + + /** + Get the console of the system. + + @return The console object + */ + Console& console(void) const { return *myConsole; } public: ////////////////////////////////////////////////////////////////////// // The following methods are system-specific and must be implemented // in derived classes. ////////////////////////////////////////////////////////////////////// - /** This method should be called to get the filename of a state file given the state number. @@ -142,17 +175,17 @@ class OSystem // Pointer to the EventHandler object EventHandler* myEventHandler; - // Reference to the FrameBuffer object - FrameBuffer& myFrameBuffer; + // Pointer to the FrameBuffer object + FrameBuffer* myFrameBuffer; - // Reference to the Sound object - Sound& mySound; + // Pointer to the Sound object + Sound* mySound; - // Reference to the Settings object - Settings& mySettings; + // Pointer to the Settings object + Settings* mySettings; - // Reference to the PropertiesSet object - PropertiesSet& myPropSet; + // Pointer to the PropertiesSet object + PropertiesSet* myPropSet; // Pointer to the (currently defined) Console object Console* myConsole; diff --git a/stella/src/emucore/Settings.cxx b/stella/src/emucore/Settings.cxx index 0d44f785d..8e120739b 100644 --- a/stella/src/emucore/Settings.cxx +++ b/stella/src/emucore/Settings.cxx @@ -13,19 +13,25 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Settings.cxx,v 1.31 2005-02-21 02:23:57 stephena Exp $ +// $Id: Settings.cxx,v 1.32 2005-02-21 20:43:20 stephena Exp $ //============================================================================ #include <cassert> #include <sstream> #include <fstream> +#include "OSystem.hxx" + #include "bspf.hxx" #include "Settings.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Settings::Settings() +Settings::Settings(OSystem* osystem) + : myOSystem(osystem) { + // Add this settings object to the OSystem + myOSystem->attach(this); + // First create the settings array myCapacity = 30; mySettings = new Setting[myCapacity]; diff --git a/stella/src/emucore/Settings.hxx b/stella/src/emucore/Settings.hxx index f527dfe40..7890ee2e9 100644 --- a/stella/src/emucore/Settings.hxx +++ b/stella/src/emucore/Settings.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: Settings.hxx,v 1.19 2005-02-21 02:23:57 stephena Exp $ +// $Id: Settings.hxx,v 1.20 2005-02-21 20:43:21 stephena Exp $ //============================================================================ #ifndef SETTINGS_HXX @@ -28,7 +28,7 @@ class OSystem; This class provides an interface for accessing frontend specific settings. @author Stephen Anthony - @version $Id: Settings.hxx,v 1.19 2005-02-21 02:23:57 stephena Exp $ + @version $Id: Settings.hxx,v 1.20 2005-02-21 20:43:21 stephena Exp $ */ class Settings { @@ -36,7 +36,7 @@ class Settings /** Create a new settings abstract class */ - Settings(); + Settings(OSystem* osystem); /** Destructor diff --git a/stella/src/emucore/TIA.cxx b/stella/src/emucore/TIA.cxx index 92b43ee96..be3301711 100644 --- a/stella/src/emucore/TIA.cxx +++ b/stella/src/emucore/TIA.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: TIA.cxx,v 1.36 2005-02-21 02:23:57 stephena Exp $ +// $Id: TIA.cxx,v 1.37 2005-02-21 20:43:22 stephena Exp $ //============================================================================ #include <cassert> @@ -30,15 +30,14 @@ #include "Deserializer.hxx" #include "Settings.hxx" #include "Sound.hxx" -#include "OSystem.hxx" #define HBLANK 68 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIA::TIA(OSystem& osystem) - : myOSystem(osystem), - myConsole(osystem.console()), - mySound(osystem.sound()), +TIA::TIA(const Console& console, Sound& sound, Settings& settings) + : myConsole(console), + mySound(sound), + mySettings(settings), myColorLossEnabled(false), myMaximumNumberOfScanlines(262), myCOLUBK(myColor[0]), @@ -266,6 +265,7 @@ void TIA::install(System& system) uInt16 shift = mySystem->pageShift(); mySystem->resetCycles(); +cerr << "TIA::install()\n"; // All accesses are to this device @@ -282,6 +282,7 @@ void TIA::install(System& system) mySystem->setPageAccess(i >> shift, access); } } + } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -535,7 +536,7 @@ void TIA::update() const uInt32* TIA::palette() const { // See which palette we should be using - string type = myOSystem.settings().getString("palette"); + string type = mySettings.getString("palette"); string format = myConsole.properties().get("Display.Format"); if(type == "standard") @@ -3272,9 +3273,9 @@ const uInt32 TIA::ourPALPaletteZ26[256] = { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TIA::TIA(const TIA& c) - : myOSystem(c.myOSystem), - myConsole(c.myConsole), + : myConsole(c.myConsole), mySound(c.mySound), + mySettings(c.mySettings), myCOLUBK(myColor[0]), myCOLUPF(myColor[1]), myCOLUP0(myColor[2]), diff --git a/stella/src/emucore/TIA.hxx b/stella/src/emucore/TIA.hxx index 6105688b1..8f7706463 100644 --- a/stella/src/emucore/TIA.hxx +++ b/stella/src/emucore/TIA.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: TIA.hxx,v 1.15 2005-02-21 02:23:57 stephena Exp $ +// $Id: TIA.hxx,v 1.16 2005-02-21 20:43:25 stephena Exp $ //============================================================================ #ifndef TIA_HXX @@ -24,7 +24,7 @@ class Sound; class System; class Serializer; class Deserializer; -class OSystem; +class Settings; #include "bspf.hxx" #include "Device.hxx" @@ -42,7 +42,7 @@ class OSystem; be displayed on screen. @author Bradford W. Mott - @version $Id: TIA.hxx,v 1.15 2005-02-21 02:23:57 stephena Exp $ + @version $Id: TIA.hxx,v 1.16 2005-02-21 20:43:25 stephena Exp $ */ class TIA : public Device , public MediaSource { @@ -50,10 +50,11 @@ class TIA : public Device , public MediaSource /** Create a new TIA for the specified console - @param console The console the TIA is associated with - @param sound The sound object the TIA is associated with + @param console The console the TIA is associated with + @param sound The sound object the TIA is associated with + @param settings The settings object the TIA is associated with */ - TIA(OSystem& osystem); + TIA(const Console& console, Sound& sound, Settings& settings); /** Destructor @@ -203,15 +204,15 @@ class TIA : public Device , public MediaSource void waitHorizontalSync(); private: - // OSsystem the TIA is associated with - const OSystem& myOSystem; - // Console the TIA is associated with const Console& myConsole; // Sound object the TIA is associated with Sound& mySound; + // Settings object the TIA is associated with + Settings& mySettings; + private: // Indicates if color loss should be enabled or disabled. Color loss // occurs on PAL (and maybe SECAM) systems when the previous frame diff --git a/stella/src/emucore/m6502/src/System.cxx b/stella/src/emucore/m6502/src/System.cxx index 6575436fc..1f3e5348f 100644 --- a/stella/src/emucore/m6502/src/System.cxx +++ b/stella/src/emucore/m6502/src/System.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: System.cxx,v 1.4 2002-08-11 17:48:13 stephena Exp $ +// $Id: System.cxx,v 1.5 2005-02-21 20:43:28 stephena Exp $ //============================================================================ #include <assert.h> @@ -101,6 +101,7 @@ void System::reset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void System::attach(Device* device) { +cerr << "System::attach()\n"; assert(myNumberOfDevices < 100); // Add device to my collection of devices diff --git a/stella/src/unix/OSystemUNIX.cxx b/stella/src/unix/OSystemUNIX.cxx index b24b50cd6..5b5281eb6 100644 --- a/stella/src/unix/OSystemUNIX.cxx +++ b/stella/src/unix/OSystemUNIX.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: OSystemUNIX.cxx,v 1.1 2005-02-21 02:23:57 stephena Exp $ +// $Id: OSystemUNIX.cxx,v 1.2 2005-02-21 20:43:47 stephena Exp $ //============================================================================ #include <cstdlib> @@ -29,9 +29,7 @@ #include "OSystemUNIX.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -OSystemUNIX::OSystemUNIX(FrameBuffer& framebuffer, Sound& sound, - Settings& settings, PropertiesSet& propset) - : OSystem(framebuffer, sound, settings, propset) +OSystemUNIX::OSystemUNIX() { } diff --git a/stella/src/unix/OSystemUNIX.hxx b/stella/src/unix/OSystemUNIX.hxx index 2c5f29346..5958a782d 100644 --- a/stella/src/unix/OSystemUNIX.hxx +++ b/stella/src/unix/OSystemUNIX.hxx @@ -13,17 +13,12 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: OSystemUNIX.hxx,v 1.1 2005-02-21 02:23:57 stephena Exp $ +// $Id: OSystemUNIX.hxx,v 1.2 2005-02-21 20:43:53 stephena Exp $ //============================================================================ #ifndef OSYSTEM_UNIX_HXX #define OSYSTEM_UNIX_HXX -class FrameBuffer; -class Sound; -class Settings; -class PropertiesSet; - #include "bspf.hxx" @@ -31,7 +26,7 @@ class PropertiesSet; This class defines UNIX-like OS's (Linux) system specific settings. @author Stephen Anthony - @version $Id: OSystemUNIX.hxx,v 1.1 2005-02-21 02:23:57 stephena Exp $ + @version $Id: OSystemUNIX.hxx,v 1.2 2005-02-21 20:43:53 stephena Exp $ */ class OSystemUNIX : public OSystem { @@ -39,8 +34,7 @@ class OSystemUNIX : public OSystem /** Create a new UNIX-specific operating system object */ - OSystemUNIX(FrameBuffer& framebuffer, Sound& sound, - Settings& settings, PropertiesSet& propset); + OSystemUNIX(); /** Destructor diff --git a/stella/src/unix/SettingsUNIX.cxx b/stella/src/unix/SettingsUNIX.cxx index 0e97ee2a9..4892715a2 100644 --- a/stella/src/unix/SettingsUNIX.cxx +++ b/stella/src/unix/SettingsUNIX.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: SettingsUNIX.cxx,v 1.8 2005-02-21 02:23:57 stephena Exp $ +// $Id: SettingsUNIX.cxx,v 1.9 2005-02-21 20:43:53 stephena Exp $ //============================================================================ #include <cstdlib> @@ -30,7 +30,8 @@ #include "SettingsUNIX.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SettingsUNIX::SettingsUNIX() +SettingsUNIX::SettingsUNIX(OSystem* osystem) + : Settings(osystem) { // First set variables that the parent class needs myBaseDir = getenv("HOME"); diff --git a/stella/src/unix/SettingsUNIX.hxx b/stella/src/unix/SettingsUNIX.hxx index 9f76524e0..999fbfe28 100644 --- a/stella/src/unix/SettingsUNIX.hxx +++ b/stella/src/unix/SettingsUNIX.hxx @@ -13,19 +13,21 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: SettingsUNIX.hxx,v 1.4 2005-02-21 02:23:57 stephena Exp $ +// $Id: SettingsUNIX.hxx,v 1.5 2005-02-21 20:43:53 stephena Exp $ //============================================================================ #ifndef SETTINGS_UNIX_HXX #define SETTINGS_UNIX_HXX +class OSystem; + #include "bspf.hxx" /** This class defines UNIX-like OS's (Linux) system specific settings. @author Stephen Anthony - @version $Id: SettingsUNIX.hxx,v 1.4 2005-02-21 02:23:57 stephena Exp $ + @version $Id: SettingsUNIX.hxx,v 1.5 2005-02-21 20:43:53 stephena Exp $ */ class SettingsUNIX : public Settings { @@ -33,7 +35,7 @@ class SettingsUNIX : public Settings /** Create a new UNIX settings object */ - SettingsUNIX(); + SettingsUNIX(OSystem* osystem); /** Destructor