mirror of https://github.com/stella-emu/stella.git
Some minor code refactoring, and first pass at getting Windows version to
compile. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@429 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
fa9786253d
commit
69c0767fa2
|
@ -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: OSystem.cxx,v 1.17 2005-05-18 16:02:53 stephena Exp $
|
// $Id: OSystem.cxx,v 1.18 2005-05-18 22:35:36 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -92,6 +92,22 @@ OSystem::~OSystem()
|
||||||
delete mySound;
|
delete mySound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void OSystem::setBaseDir(const string& basedir)
|
||||||
|
{
|
||||||
|
myBaseDir = basedir;
|
||||||
|
if(!fileExists(myBaseDir))
|
||||||
|
makeDir(myBaseDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void OSystem::setStateDir(const string& statedir)
|
||||||
|
{
|
||||||
|
myStateDir = statedir;
|
||||||
|
if(!fileExists(myStateDir))
|
||||||
|
makeDir(myStateDir);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void OSystem::setPropertiesFiles(const string& userprops,
|
void OSystem::setPropertiesFiles(const string& userprops,
|
||||||
const string& systemprops)
|
const string& systemprops)
|
||||||
|
|
|
@ -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: OSystem.hxx,v 1.15 2005-05-17 18:42:23 stephena Exp $
|
// $Id: OSystem.hxx,v 1.16 2005-05-18 22:35:37 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef OSYSTEM_HXX
|
#ifndef OSYSTEM_HXX
|
||||||
|
@ -38,7 +38,7 @@ class Launcher;
|
||||||
other objects belong.
|
other objects belong.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: OSystem.hxx,v 1.15 2005-05-17 18:42:23 stephena Exp $
|
@version $Id: OSystem.hxx,v 1.16 2005-05-18 22:35:37 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class OSystem
|
class OSystem
|
||||||
{
|
{
|
||||||
|
@ -148,31 +148,6 @@ class OSystem
|
||||||
*/
|
*/
|
||||||
uInt32 frameRate() { return myDisplayFrameRate; }
|
uInt32 frameRate() { return myDisplayFrameRate; }
|
||||||
|
|
||||||
/**
|
|
||||||
Set the base directory for all configuration files
|
|
||||||
*/
|
|
||||||
void setBaseDir(const string& basedir) { myBaseDir = basedir; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set the directory where state files are stored
|
|
||||||
*/
|
|
||||||
void setStateDir(const string& statedir) { myStateDir = statedir; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set the locations of game properties files
|
|
||||||
*/
|
|
||||||
void setPropertiesFiles(const string& userprops, const string& systemprops);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set the locations of config files
|
|
||||||
*/
|
|
||||||
void setConfigFiles(const string& userconfig, const string& systemconfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set the location of the gamelist cache file
|
|
||||||
*/
|
|
||||||
void setCacheFile(const string& cachefile) { myGameListCacheFile = cachefile; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the default directory for storing data.
|
Return the default directory for storing data.
|
||||||
*/
|
*/
|
||||||
|
@ -303,6 +278,8 @@ class OSystem
|
||||||
*/
|
*/
|
||||||
virtual string stateFilename(const string& md5, uInt32 state) = 0;
|
virtual string stateFilename(const string& md5, uInt32 state) = 0;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// FIXME - move these to FSNode as static methods
|
||||||
/**
|
/**
|
||||||
This method should be called to test whether the given file exists.
|
This method should be called to test whether the given file exists.
|
||||||
|
|
||||||
|
@ -320,6 +297,33 @@ class OSystem
|
||||||
@return boolean representing whether or not the directory was created
|
@return boolean representing whether or not the directory was created
|
||||||
*/
|
*/
|
||||||
virtual bool makeDir(const string& path) = 0;
|
virtual bool makeDir(const string& path) = 0;
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
Set the base directory for all Stella files
|
||||||
|
*/
|
||||||
|
void setBaseDir(const string& basedir);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the directory where state files are stored
|
||||||
|
*/
|
||||||
|
void setStateDir(const string& statedir);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the locations of game properties files
|
||||||
|
*/
|
||||||
|
void setPropertiesFiles(const string& userprops, const string& systemprops);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the locations of config files
|
||||||
|
*/
|
||||||
|
void setConfigFiles(const string& userconfig, const string& systemconfig);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the location of the gamelist cache file
|
||||||
|
*/
|
||||||
|
void setCacheFile(const string& cachefile) { myGameListCacheFile = cachefile; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Pointer to the EventHandler object
|
// Pointer to the EventHandler object
|
||||||
|
|
|
@ -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: OSystemUNIX.cxx,v 1.7 2005-05-11 19:36:00 stephena Exp $
|
// $Id: OSystemUNIX.cxx,v 1.8 2005-05-18 22:35:37 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
@ -33,31 +33,38 @@
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Each derived class is responsible for calling the following methods
|
||||||
|
in its constructor:
|
||||||
|
|
||||||
|
setBaseDir()
|
||||||
|
setStateDir()
|
||||||
|
setPropertiesFiles()
|
||||||
|
setConfigFiles()
|
||||||
|
setCacheFile()
|
||||||
|
|
||||||
|
See OSystem.hxx for a further explanation
|
||||||
|
*/
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
OSystemUNIX::OSystemUNIX()
|
OSystemUNIX::OSystemUNIX()
|
||||||
{
|
{
|
||||||
// First set variables that the OSystem needs
|
// First set variables that the OSystem needs
|
||||||
string basedir = getenv("HOME");
|
string basedir = string(getenv("HOME")) + "/.stella";
|
||||||
setBaseDir(basedir);
|
setBaseDir(basedir);
|
||||||
|
|
||||||
string stelladir = basedir + "/.stella";
|
string statedir = basedir + "/state";
|
||||||
if(!fileExists(stelladir))
|
|
||||||
makeDir(stelladir);
|
|
||||||
|
|
||||||
string statedir = stelladir + "/state/";
|
|
||||||
if(!fileExists(statedir))
|
|
||||||
makeDir(statedir);
|
|
||||||
setStateDir(statedir);
|
setStateDir(statedir);
|
||||||
|
|
||||||
string userPropertiesFile = stelladir + "/stella.pro";
|
string userPropertiesFile = basedir + "/stella.pro";
|
||||||
string systemPropertiesFile = "/etc/stella.pro";
|
string systemPropertiesFile = "/etc/stella.pro";
|
||||||
setPropertiesFiles(userPropertiesFile, systemPropertiesFile);
|
setPropertiesFiles(userPropertiesFile, systemPropertiesFile);
|
||||||
|
|
||||||
string userConfigFile = stelladir + "/stellarc";
|
string userConfigFile = basedir + "/stellarc";
|
||||||
string systemConfigFile = "/etc/stellarc";
|
string systemConfigFile = "/etc/stellarc";
|
||||||
setConfigFiles(userConfigFile, systemConfigFile);
|
setConfigFiles(userConfigFile, systemConfigFile);
|
||||||
|
|
||||||
string cacheFile = stelladir + "/stella.cache";
|
string cacheFile = basedir + "/stella.cache";
|
||||||
setCacheFile(cacheFile);
|
setCacheFile(cacheFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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: OSystemUNIX.hxx,v 1.5 2005-05-05 00:10:49 stephena Exp $
|
// $Id: OSystemUNIX.hxx,v 1.6 2005-05-18 22:35:37 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef OSYSTEM_UNIX_HXX
|
#ifndef OSYSTEM_UNIX_HXX
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
This class defines UNIX-like OS's (Linux) system specific settings.
|
This class defines UNIX-like OS's (Linux) system specific settings.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: OSystemUNIX.hxx,v 1.5 2005-05-05 00:10:49 stephena Exp $
|
@version $Id: OSystemUNIX.hxx,v 1.6 2005-05-18 22:35:37 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class OSystemUNIX : public OSystem
|
class OSystemUNIX : public OSystem
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,6 @@ class OSystemUNIX : public OSystem
|
||||||
*/
|
*/
|
||||||
virtual string stateFilename(const string& md5, uInt32 state);
|
virtual string stateFilename(const string& md5, uInt32 state);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This method should be called to test whether the given file exists.
|
This method should be called to test whether the given file exists.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,160 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-1999 by Bradford W. Mott
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: OSystemWin32.cxx,v 1.1 2005-05-18 22:35:37 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <direct.h>
|
||||||
|
|
||||||
|
#include "bspf.hxx"
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
#include "OSystemWin32.hxx"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Each derived class is responsible for calling the following methods
|
||||||
|
in its constructor:
|
||||||
|
|
||||||
|
setBaseDir()
|
||||||
|
setStateDir()
|
||||||
|
setPropertiesFiles()
|
||||||
|
setConfigFiles()
|
||||||
|
setCacheFile()
|
||||||
|
|
||||||
|
See OSystem.hxx for a further explanation
|
||||||
|
*/
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
OSystemWin32::OSystemWin32()
|
||||||
|
{
|
||||||
|
// FIXME - there really should be code here to determine which version
|
||||||
|
// of Windows is being used.
|
||||||
|
// If using a version which supports multiple users (NT and above),
|
||||||
|
// the relevant directories should be created in per-user locations.
|
||||||
|
// For now, we just put it in the same directory as the executable.
|
||||||
|
|
||||||
|
string basedir = ".\\";
|
||||||
|
setBaseDir(basedir);
|
||||||
|
|
||||||
|
string stateDir = basedir + "state\\";
|
||||||
|
setStateDir(stateDir);
|
||||||
|
|
||||||
|
string propsFile = basedir + "stella.pro";
|
||||||
|
setPropertiesFiles(propsFile, propsFile); // Input and output are the same
|
||||||
|
|
||||||
|
string configFile = basedir + "stella.ini";
|
||||||
|
setConfigFiles(configFile, configFile); // Input and output are the same
|
||||||
|
|
||||||
|
string cacheFile = basedir + "stella.cache";
|
||||||
|
setCacheFile(cacheFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
OSystemWin32::~OSystemWin32()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void OSystemWin32::mainLoop()
|
||||||
|
{
|
||||||
|
// These variables are common to both timing options
|
||||||
|
// and are needed to calculate the overall frames per second.
|
||||||
|
uInt32 frameTime = 0, numberOfFrames = 0;
|
||||||
|
|
||||||
|
// Set up less accurate timing stuff
|
||||||
|
uInt32 startTime, virtualTime, currentTime;
|
||||||
|
|
||||||
|
// Set the base for the timers
|
||||||
|
virtualTime = getTicks();
|
||||||
|
frameTime = 0;
|
||||||
|
|
||||||
|
// Main game loop
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
// Exit if the user wants to quit
|
||||||
|
if(myEventHandler->doExitGame() || myEventHandler->doQuit())
|
||||||
|
break;
|
||||||
|
|
||||||
|
startTime = getTicks();
|
||||||
|
myEventHandler->poll();
|
||||||
|
myFrameBuffer->update();
|
||||||
|
|
||||||
|
currentTime = getTicks();
|
||||||
|
virtualTime += myTimePerFrame;
|
||||||
|
if(currentTime < virtualTime)
|
||||||
|
{
|
||||||
|
SDL_Delay((virtualTime - currentTime)/1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentTime = getTicks() - startTime;
|
||||||
|
frameTime += currentTime;
|
||||||
|
++numberOfFrames;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only print console information if a console was actually created
|
||||||
|
if(mySettings->getBool("showinfo") && myConsole)
|
||||||
|
{
|
||||||
|
double executionTime = (double) frameTime / 1000000.0;
|
||||||
|
double framesPerSecond = (double) numberOfFrames / executionTime;
|
||||||
|
|
||||||
|
cout << endl;
|
||||||
|
cout << numberOfFrames << " total frames drawn\n";
|
||||||
|
cout << framesPerSecond << " frames/second\n";
|
||||||
|
cout << endl;
|
||||||
|
cout << "Cartridge Name: " << myConsole->properties().get("Cartridge.Name");
|
||||||
|
cout << endl;
|
||||||
|
cout << "Cartridge MD5: " << myConsole->properties().get("Cartridge.MD5");
|
||||||
|
cout << endl << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
uInt32 OSystemWin32::getTicks()
|
||||||
|
{
|
||||||
|
return (uInt32) SDL_GetTicks() * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
string OSystemWin32::stateFilename(const string& md5, uInt32 state)
|
||||||
|
{
|
||||||
|
ostringstream buf;
|
||||||
|
buf << stateDir() << "\\" << md5 << ".st" << state;
|
||||||
|
|
||||||
|
return buf.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool OSystemWin32::fileExists(const string& filename)
|
||||||
|
{
|
||||||
|
// FIXME - Since I don't have time to figure out the correct
|
||||||
|
// and fast 'Win32' way of doing this, I'll cheat a bit
|
||||||
|
ifstream in(filename.c_str());
|
||||||
|
if(in)
|
||||||
|
{
|
||||||
|
in.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool OSystemWin32::makeDir(const string& path)
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
_mkdir(path.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-1999 by Bradford W. Mott
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: OSystemWin32.hxx,v 1.1 2005-05-18 22:35:37 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef OSYSTEM_WIN32_HXX
|
||||||
|
#define OSYSTEM_WIN32_HXX
|
||||||
|
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class defines Windows system specific settings.
|
||||||
|
|
||||||
|
@author Stephen Anthony
|
||||||
|
@version $Id: OSystemWin32.hxx,v 1.1 2005-05-18 22:35:37 stephena Exp $
|
||||||
|
*/
|
||||||
|
class OSystemWin32 : public OSystem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Create a new Win32 operating system object
|
||||||
|
*/
|
||||||
|
OSystemWin32();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructor
|
||||||
|
*/
|
||||||
|
virtual ~OSystemWin32();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
This method runs the main loop. Since different platforms
|
||||||
|
may use different timing methods and/or algorithms, this method has
|
||||||
|
been abstracted to each platform.
|
||||||
|
*/
|
||||||
|
virtual void mainLoop();
|
||||||
|
|
||||||
|
/**
|
||||||
|
This method returns number of ticks in microseconds.
|
||||||
|
|
||||||
|
@return Current time in microseconds.
|
||||||
|
*/
|
||||||
|
virtual uInt32 getTicks();
|
||||||
|
|
||||||
|
/**
|
||||||
|
This method should be called to get the filename of a state file
|
||||||
|
given the state number.
|
||||||
|
|
||||||
|
@param md5 The md5sum to use as part of the filename.
|
||||||
|
@param state The state to use as part of the filename.
|
||||||
|
|
||||||
|
@return String representing the full path of the state filename.
|
||||||
|
*/
|
||||||
|
virtual string stateFilename(const string& md5, uInt32 state);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This method should be called to test whether the given file exists.
|
||||||
|
|
||||||
|
@param filename The filename to test for existence.
|
||||||
|
|
||||||
|
@return boolean representing whether or not the file exists
|
||||||
|
*/
|
||||||
|
virtual bool fileExists(const string& filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This method should be called to create the specified directory.
|
||||||
|
|
||||||
|
@param path The directory to create
|
||||||
|
|
||||||
|
@return boolean representing whether or not the directory was created
|
||||||
|
*/
|
||||||
|
virtual bool makeDir(const string& path);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -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: SettingsWin32.cxx,v 1.13 2005-05-02 19:36:05 stephena Exp $
|
// $Id: SettingsWin32.cxx,v 1.14 2005-05-18 22:35:37 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -27,83 +27,11 @@
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
SettingsWin32::SettingsWin32()
|
SettingsWin32::SettingsWin32()
|
||||||
{
|
{
|
||||||
// FIXME - there really should be code here to determine which version
|
|
||||||
// of Windows is being used.
|
|
||||||
// If using a version which supports multiple users (NT and above),
|
|
||||||
// the relevant directories should be created in per-user locations.
|
|
||||||
// For now, we just put it in the same directory as the executable.
|
|
||||||
|
|
||||||
// First set variables that the parent class needs
|
|
||||||
myBaseDir = ".\\";
|
|
||||||
string stelladir = myBaseDir;
|
|
||||||
|
|
||||||
myStateDir = stelladir + "state\\";
|
|
||||||
_mkdir(myStateDir.c_str());
|
|
||||||
|
|
||||||
string userPropertiesFile = stelladir + "stella.pro";
|
|
||||||
// string systemPropertiesFile = stelladir + "stella.pro";
|
|
||||||
string userConfigFile = stelladir + "stella.ini";
|
|
||||||
// string systemConfigFile = stelladir + "stella.ini";
|
|
||||||
|
|
||||||
// Set up the names of the input and output config files
|
|
||||||
myConfigOutputFile = userConfigFile;
|
|
||||||
if(fileExists(userConfigFile))
|
|
||||||
myConfigInputFile = userConfigFile;
|
|
||||||
// else if(fileExists(systemConfigFile))
|
|
||||||
// myConfigInputFile = systemConfigFile;
|
|
||||||
else
|
|
||||||
myConfigInputFile = "";
|
|
||||||
|
|
||||||
// Set up the input and output properties files
|
|
||||||
myPropertiesOutputFile = userPropertiesFile;
|
|
||||||
if(fileExists(userPropertiesFile))
|
|
||||||
myPropertiesInputFile = userPropertiesFile;
|
|
||||||
// else if(fileExists(systemPropertiesFile))
|
|
||||||
// myPropertiesInputFile = systemPropertiesFile;
|
|
||||||
else
|
|
||||||
myPropertiesInputFile = "";
|
|
||||||
|
|
||||||
// Now create Win32 specific settings
|
|
||||||
set("video_driver", "windib"); // This seems to be much faster than DirectX
|
set("video_driver", "windib"); // This seems to be much faster than DirectX
|
||||||
set("romdir", "roms");
|
|
||||||
set("fragsize", "2048"); // Anything less than this usually causes sound skipping
|
set("fragsize", "2048"); // Anything less than this usually causes sound skipping
|
||||||
#ifdef SNAPSHOT_SUPPORT
|
|
||||||
set("ssdir", ".\\");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// These settings are for the StellaX frontend
|
|
||||||
// If you don't use StellaX, the following settings are ignored
|
|
||||||
set("sortcol", "0");
|
|
||||||
set("namecolwidth", "0");
|
|
||||||
set("manufacturercolwidth", "0");
|
|
||||||
set("raritycolwidth", "0");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
SettingsWin32::~SettingsWin32()
|
SettingsWin32::~SettingsWin32()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
string SettingsWin32::stateFilename(const string& md5, uInt32 state)
|
|
||||||
{
|
|
||||||
ostringstream buf;
|
|
||||||
buf << myStateDir << md5 << ".st" << state;
|
|
||||||
|
|
||||||
return buf.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
bool SettingsWin32::fileExists(const string& filename)
|
|
||||||
{
|
|
||||||
// FIXME - Since I don't have time to figure out the correct
|
|
||||||
// and fast 'Win32' way of doing this, I'll cheat a bit
|
|
||||||
ifstream in(filename.c_str());
|
|
||||||
if(in)
|
|
||||||
{
|
|
||||||
in.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
|
@ -13,54 +13,29 @@
|
||||||
// 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: SettingsWin32.hxx,v 1.4 2004-07-05 00:53:48 stephena Exp $
|
// $Id: SettingsWin32.hxx,v 1.5 2005-05-18 22:35:37 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef SETTINGS_WIN32_HXX
|
#ifndef SETTINGS_WIN32_HXX
|
||||||
#define SETTINGS_WIN32_HXX
|
#define SETTINGS_WIN32_HXX
|
||||||
|
|
||||||
|
class OSystem;
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
This class defines Windows system specific settings.
|
|
||||||
|
|
||||||
@author Stephen Anthony
|
|
||||||
@version $Id: SettingsWin32.hxx,v 1.4 2004-07-05 00:53:48 stephena Exp $
|
|
||||||
*/
|
|
||||||
class SettingsWin32 : public Settings
|
class SettingsWin32 : public Settings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
Create a new UNIX settings object
|
Create a new UNIX settings object
|
||||||
*/
|
*/
|
||||||
SettingsWin32();
|
SettingsWin32(OSystem* osystem);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destructor
|
Destructor
|
||||||
*/
|
*/
|
||||||
virtual ~SettingsWin32();
|
virtual ~SettingsWin32();
|
||||||
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
This method should be called to get the filename of a state file
|
|
||||||
given the state number.
|
|
||||||
|
|
||||||
@param md5 The md5sum to use as part of the filename.
|
|
||||||
@param state The state to use as part of the filename.
|
|
||||||
|
|
||||||
@return String representing the full path of the state filename.
|
|
||||||
*/
|
|
||||||
virtual string stateFilename(const string& md5, uInt32 state);
|
|
||||||
|
|
||||||
/**
|
|
||||||
This method should be called to test whether the given file exists.
|
|
||||||
|
|
||||||
@param filename The filename to test for existence.
|
|
||||||
|
|
||||||
@return boolean representing whether or not the file exists
|
|
||||||
*/
|
|
||||||
virtual bool fileExists(const string& filename);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue