mirror of https://github.com/stella-emu/stella.git
Added new commandline options -ssdir and -ssname to snapshot support.
-ssdir <path> : Path which specifies where snapshots are saved. -ssname <name> : Can be either "romname" or "md5sum". Will name the snapshot file according to the specified option (from stella.pro file). Some cleanups of the snapshot code. Fixed bug where segmentation fault occurred if there was no stella.pro present. Now an error is printed. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@39 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
cccf418bc6
commit
de2df715ea
|
@ -24,3 +24,5 @@
|
||||||
;paddle = <0|1|2|3|real>
|
;paddle = <0|1|2|3|real>
|
||||||
;showfps = <0|1>
|
;showfps = <0|1>
|
||||||
;fullscreen = <0|1>
|
;fullscreen = <0|1>
|
||||||
|
;ssdir = <pathname>
|
||||||
|
;ssname = <romname|md5sum>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: mainSDL.cxx,v 1.5 2002-01-19 02:17:19 stephena Exp $
|
// $Id: mainSDL.cxx,v 1.6 2002-02-01 02:13:08 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -42,6 +42,12 @@
|
||||||
|
|
||||||
#ifdef IMLIB2_SNAPSHOT
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
|
|
||||||
|
// The path to save snapshot files
|
||||||
|
string theSnapShotDir = "";
|
||||||
|
|
||||||
|
// What the snapshot should be called (romname or md5sum)
|
||||||
|
string theSnapShotName = "";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SDL_Joystick* theLeftJoystick;
|
SDL_Joystick* theLeftJoystick;
|
||||||
|
@ -65,7 +71,7 @@ void takeSnapshot();
|
||||||
void togglePause();
|
void togglePause();
|
||||||
uInt32 maxWindowSizeForScreen();
|
uInt32 maxWindowSizeForScreen();
|
||||||
|
|
||||||
void setupProperties(PropertiesSet& set);
|
bool setupProperties(PropertiesSet& set);
|
||||||
void handleCommandLineArguments(int ac, char* av[]);
|
void handleCommandLineArguments(int ac, char* av[]);
|
||||||
void handleRCFile();
|
void handleRCFile();
|
||||||
void parseRCOptions(istream& in);
|
void parseRCOptions(istream& in);
|
||||||
|
@ -352,6 +358,13 @@ bool setupDisplay()
|
||||||
imlib_context_set_drawable(theX11Window);
|
imlib_context_set_drawable(theX11Window);
|
||||||
imlib_context_set_visual(DefaultVisual(theX11Display, theX11Screen));
|
imlib_context_set_visual(DefaultVisual(theX11Display, theX11Screen));
|
||||||
imlib_context_set_colormap(DefaultColormap(theX11Display, theX11Screen));
|
imlib_context_set_colormap(DefaultColormap(theX11Display, theX11Screen));
|
||||||
|
|
||||||
|
// By default, snapshot dir is HOME and name is ROMNAME, assuming that
|
||||||
|
// they haven't been specified on the commandline
|
||||||
|
if(theSnapShotDir == "")
|
||||||
|
theSnapShotDir = getenv("HOME");
|
||||||
|
if(theSnapShotName == "")
|
||||||
|
theSnapShotName = "romname";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1009,11 +1022,12 @@ void handleEvents()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Called when the user wants to take a snapshot of the current display.
|
Called when the user wants to take a snapshot of the current display.
|
||||||
Currently, images are stored in png format in the users home directory
|
Images are stored in png format in the directory specified by the 'ssdir'
|
||||||
name consecutively as "Cartridge.Name".png. If that name exists, they are
|
argument, or in $HOME by default.
|
||||||
named as Cartridge.Name"_x.png, where x starts with 1 and
|
Images are named consecutively as "NAME".png, where name is specified by
|
||||||
increases if the previous name already exists. All spaces in filenames
|
the 'ssname' argument. If that name exists, they are named as "Name"_x.png,
|
||||||
are converted to underscore '_'.
|
where x starts with 1 and increases if the previous name already exists.
|
||||||
|
All spaces in filenames are converted to underscore '_'.
|
||||||
*/
|
*/
|
||||||
void takeSnapshot()
|
void takeSnapshot()
|
||||||
{
|
{
|
||||||
|
@ -1031,8 +1045,17 @@ void takeSnapshot()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now find the correct name for the snapshot
|
// Now find the correct name for the snapshot
|
||||||
string filename = getenv("HOME");
|
string filename = theSnapShotDir;
|
||||||
filename = filename + "/" + theConsole->properties().get("Cartridge.Name");
|
if(theSnapShotName == "romname")
|
||||||
|
filename = filename + "/" + theConsole->properties().get("Cartridge.Name");
|
||||||
|
else if(theSnapShotName == "md5sum")
|
||||||
|
filename = filename + "/" + theConsole->properties().get("Cartridge.MD5");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cerr << "ERROR: unknown name " << theSnapShotName
|
||||||
|
<< " for snapshot type" << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Replace all spaces in name with underscores
|
// Replace all spaces in name with underscores
|
||||||
replace(filename.begin(), filename.end(), ' ', '_');
|
replace(filename.begin(), filename.end(), ' ', '_');
|
||||||
|
@ -1062,7 +1085,10 @@ void takeSnapshot()
|
||||||
imlib_save_image(filename.c_str());
|
imlib_save_image(filename.c_str());
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
|
|
||||||
cerr << "Snapshot saved as " << filename << endl;
|
if(access(filename.c_str(), F_OK) == 0)
|
||||||
|
cerr << "Snapshot saved as " << filename << endl;
|
||||||
|
else
|
||||||
|
cerr << "Couldn't create snapshot " << filename << endl;
|
||||||
#else
|
#else
|
||||||
cerr << "Snapshot mode not supported.\n";
|
cerr << "Snapshot mode not supported.\n";
|
||||||
#endif
|
#endif
|
||||||
|
@ -1139,6 +1165,10 @@ void usage()
|
||||||
" -paddle <0|1|2|3|real> Indicates which paddle the mouse should emulate",
|
" -paddle <0|1|2|3|real> Indicates which paddle the mouse should emulate",
|
||||||
" or that real Atari 2600 paddles are being used",
|
" or that real Atari 2600 paddles are being used",
|
||||||
" -showfps Shows some game info on exit",
|
" -showfps Shows some game info on exit",
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
" -ssdir <path> The directory to save snapshot files to",
|
||||||
|
" -ssname <name> How to name the snapshot (romname or md5sum)",
|
||||||
|
#endif
|
||||||
"",
|
"",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
@ -1153,11 +1183,12 @@ void usage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Setup the properties set by first checking for a user file ".stella.pro",
|
Setup the properties set by first checking for a user file ".stella.pro",
|
||||||
then a system-wide file "/etc/stella.pro".
|
then a system-wide file "/etc/stella.pro". Return false if neither file
|
||||||
|
is found, else return true.
|
||||||
|
|
||||||
@param set The properties set to setup
|
@param set The properties set to setup
|
||||||
*/
|
*/
|
||||||
void setupProperties(PropertiesSet& set)
|
bool setupProperties(PropertiesSet& set)
|
||||||
{
|
{
|
||||||
string homePropertiesFile = getenv("HOME");
|
string homePropertiesFile = getenv("HOME");
|
||||||
homePropertiesFile += "/.stella.pro";
|
homePropertiesFile += "/.stella.pro";
|
||||||
|
@ -1166,10 +1197,17 @@ void setupProperties(PropertiesSet& set)
|
||||||
if(access(homePropertiesFile.c_str(), R_OK) == 0)
|
if(access(homePropertiesFile.c_str(), R_OK) == 0)
|
||||||
{
|
{
|
||||||
set.load(homePropertiesFile, &Console::defaultProperties(), false);
|
set.load(homePropertiesFile, &Console::defaultProperties(), false);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if(access(systemPropertiesFile.c_str(), R_OK) == 0)
|
else if(access(systemPropertiesFile.c_str(), R_OK) == 0)
|
||||||
{
|
{
|
||||||
set.load(systemPropertiesFile, &Console::defaultProperties(), false);
|
set.load(systemPropertiesFile, &Console::defaultProperties(), false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cerr << "ERROR: Couldn't find stella.pro file." << endl;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1253,6 +1291,16 @@ void handleCommandLineArguments(int argc, char* argv[])
|
||||||
|
|
||||||
theDesiredVolume = volume;
|
theDesiredVolume = volume;
|
||||||
}
|
}
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
else if(string(argv[i]) == "-ssdir")
|
||||||
|
{
|
||||||
|
theSnapShotDir = argv[++i];
|
||||||
|
}
|
||||||
|
else if(string(argv[i]) == "-ssname")
|
||||||
|
{
|
||||||
|
theSnapShotName = argv[++i];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cout << "Undefined option " << argv[i] << endl;
|
cout << "Undefined option " << argv[i] << endl;
|
||||||
|
@ -1403,6 +1451,16 @@ void parseRCOptions(istream& in)
|
||||||
|
|
||||||
theDesiredVolume = volume;
|
theDesiredVolume = volume;
|
||||||
}
|
}
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
else if(key == "ssdir")
|
||||||
|
{
|
||||||
|
theSnapShotDir = value;
|
||||||
|
}
|
||||||
|
else if(key == "ssname")
|
||||||
|
{
|
||||||
|
theSnapShotName = value;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1451,7 +1509,11 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
// Create a properties set for us to use and set it up
|
// Create a properties set for us to use and set it up
|
||||||
PropertiesSet propertiesSet;
|
PropertiesSet propertiesSet;
|
||||||
setupProperties(propertiesSet);
|
if(!setupProperties(propertiesSet))
|
||||||
|
{
|
||||||
|
delete[] image;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
// Create a sound object for use with the console
|
// Create a sound object for use with the console
|
||||||
SoundUnix sound(theDesiredVolume);
|
SoundUnix sound(theDesiredVolume);
|
||||||
|
|
|
@ -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: mainX11.cxx,v 1.5 2002-01-16 15:09:21 stephena Exp $
|
// $Id: mainX11.cxx,v 1.6 2002-02-01 02:13:08 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -45,6 +45,12 @@
|
||||||
|
|
||||||
#ifdef IMLIB2_SNAPSHOT
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
|
|
||||||
|
// The path to save snapshot files
|
||||||
|
string theSnapShotDir = "";
|
||||||
|
|
||||||
|
// What the snapshot should be called (romname or md5sum)
|
||||||
|
string theSnapShotName = "";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LINUX_JOYSTICK
|
#ifdef LINUX_JOYSTICK
|
||||||
|
@ -88,12 +94,14 @@ void grabMouse(bool grab);
|
||||||
void toggleFullscreen();
|
void toggleFullscreen();
|
||||||
void takeSnapshot();
|
void takeSnapshot();
|
||||||
void togglePause();
|
void togglePause();
|
||||||
void setupProperties(PropertiesSet& set);
|
uInt32 maxWindowSizeForScreen();
|
||||||
|
|
||||||
|
bool setupProperties(PropertiesSet& set);
|
||||||
void handleCommandLineArguments(int argc, char* argv[]);
|
void handleCommandLineArguments(int argc, char* argv[]);
|
||||||
void handleRCFile();
|
void handleRCFile();
|
||||||
void parseRCOptions(istream& in);
|
void parseRCOptions(istream& in);
|
||||||
void usage();
|
void usage();
|
||||||
uInt32 maxWindowSizeForScreen();
|
|
||||||
|
|
||||||
// Global event stuff
|
// Global event stuff
|
||||||
struct Switches
|
struct Switches
|
||||||
|
@ -385,6 +393,13 @@ bool setupDisplay()
|
||||||
imlib_context_set_colormap(thePrivateColormap);
|
imlib_context_set_colormap(thePrivateColormap);
|
||||||
else
|
else
|
||||||
imlib_context_set_colormap(DefaultColormap(theDisplay, theScreen));
|
imlib_context_set_colormap(DefaultColormap(theDisplay, theScreen));
|
||||||
|
|
||||||
|
// By default, snapshot dir is HOME and name is ROMNAME, assuming that
|
||||||
|
// they haven't been specified on the commandline
|
||||||
|
if(theSnapShotDir == "")
|
||||||
|
theSnapShotDir = getenv("HOME");
|
||||||
|
if(theSnapShotName == "")
|
||||||
|
theSnapShotName = "romname";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -985,11 +1000,12 @@ bool createCursors()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Called when the user wants to take a snapshot of the current display.
|
Called when the user wants to take a snapshot of the current display.
|
||||||
Currently, images are stored in png format in the users home directory
|
Images are stored in png format in the directory specified by the 'ssdir'
|
||||||
name consecutively as "Cartridge.Name".png. If that name exists, they are
|
argument, or in $HOME by default.
|
||||||
named as Cartridge.Name"_x.png, where x starts with 1 and
|
Images are named consecutively as "NAME".png, where name is specified by
|
||||||
increases if the previous name already exists. All spaces in filenames
|
the 'ssname' argument. If that name exists, they are named as "Name"_x.png,
|
||||||
are converted to underscore '_'.
|
where x starts with 1 and increases if the previous name already exists.
|
||||||
|
All spaces in filenames are converted to underscore '_'.
|
||||||
*/
|
*/
|
||||||
void takeSnapshot()
|
void takeSnapshot()
|
||||||
{
|
{
|
||||||
|
@ -1007,8 +1023,17 @@ void takeSnapshot()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now find the correct name for the snapshot
|
// Now find the correct name for the snapshot
|
||||||
string filename = getenv("HOME");
|
string filename = theSnapShotDir;
|
||||||
filename = filename + "/" + theConsole->properties().get("Cartridge.Name");
|
if(theSnapShotName == "romname")
|
||||||
|
filename = filename + "/" + theConsole->properties().get("Cartridge.Name");
|
||||||
|
else if(theSnapShotName == "md5sum")
|
||||||
|
filename = filename + "/" + theConsole->properties().get("Cartridge.MD5");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cerr << "ERROR: unknown name " << theSnapShotName
|
||||||
|
<< " for snapshot type" << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Replace all spaces in name with underscores
|
// Replace all spaces in name with underscores
|
||||||
replace(filename.begin(), filename.end(), ' ', '_');
|
replace(filename.begin(), filename.end(), ' ', '_');
|
||||||
|
@ -1038,7 +1063,10 @@ void takeSnapshot()
|
||||||
imlib_save_image(filename.c_str());
|
imlib_save_image(filename.c_str());
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
|
|
||||||
cerr << "Snapshot saved as " << filename << endl;
|
if(access(filename.c_str(), F_OK) == 0)
|
||||||
|
cerr << "Snapshot saved as " << filename << endl;
|
||||||
|
else
|
||||||
|
cerr << "Couldn't create snapshot " << filename << endl;
|
||||||
#else
|
#else
|
||||||
cerr << "Snapshot mode not supported.\n";
|
cerr << "Snapshot mode not supported.\n";
|
||||||
#endif
|
#endif
|
||||||
|
@ -1080,9 +1108,9 @@ void usage()
|
||||||
{
|
{
|
||||||
static const char* message[] = {
|
static const char* message[] = {
|
||||||
"",
|
"",
|
||||||
"XStella version 1.2",
|
"X Stella version 1.2",
|
||||||
"",
|
"",
|
||||||
"Usage: xstella [option ...] file",
|
"Usage: stella.x11 [option ...] file",
|
||||||
"",
|
"",
|
||||||
"Valid options are:",
|
"Valid options are:",
|
||||||
"",
|
"",
|
||||||
|
@ -1090,7 +1118,7 @@ void usage()
|
||||||
" -fps <number> Display the given number of frames per second",
|
" -fps <number> Display the given number of frames per second",
|
||||||
" -owncmap Install a private colormap",
|
" -owncmap Install a private colormap",
|
||||||
" -winsize <size> Makes initial window be 'size' times normal",
|
" -winsize <size> Makes initial window be 'size' times normal",
|
||||||
" -fullscreen Play the game in fullscreen mode",
|
// " -fullscreen Play the game in fullscreen mode",
|
||||||
" -grabmouse Keeps the mouse in the game window",
|
" -grabmouse Keeps the mouse in the game window",
|
||||||
" -hidecursor Hides the mouse cursor in the game window",
|
" -hidecursor Hides the mouse cursor in the game window",
|
||||||
" -center Centers the game window onscreen",
|
" -center Centers the game window onscreen",
|
||||||
|
@ -1102,6 +1130,10 @@ void usage()
|
||||||
" -paddle <0|1|2|3> Indicates which paddle the mouse should emulate",
|
" -paddle <0|1|2|3> Indicates which paddle the mouse should emulate",
|
||||||
#endif
|
#endif
|
||||||
" -showfps Shows some game info on exit",
|
" -showfps Shows some game info on exit",
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
" -ssdir <path> The directory to save snapshot files to",
|
||||||
|
" -ssname <name> How to name the snapshot (romname or md5sum)",
|
||||||
|
#endif
|
||||||
"",
|
"",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
@ -1115,11 +1147,12 @@ void usage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Setup the properties set by first checking for a user file ".stella.pro",
|
Setup the properties set by first checking for a user file ".stella.pro",
|
||||||
then a system-wide file "/etc/stella.pro".
|
then a system-wide file "/etc/stella.pro". Return false if neither file
|
||||||
|
is found, else return true.
|
||||||
|
|
||||||
@param set The properties set to setup
|
@param set The properties set to setup
|
||||||
*/
|
*/
|
||||||
void setupProperties(PropertiesSet& set)
|
bool setupProperties(PropertiesSet& set)
|
||||||
{
|
{
|
||||||
string homePropertiesFile = getenv("HOME");
|
string homePropertiesFile = getenv("HOME");
|
||||||
homePropertiesFile += "/.stella.pro";
|
homePropertiesFile += "/.stella.pro";
|
||||||
|
@ -1128,10 +1161,17 @@ void setupProperties(PropertiesSet& set)
|
||||||
if(access(homePropertiesFile.c_str(), R_OK) == 0)
|
if(access(homePropertiesFile.c_str(), R_OK) == 0)
|
||||||
{
|
{
|
||||||
set.load(homePropertiesFile, &Console::defaultProperties(), false);
|
set.load(homePropertiesFile, &Console::defaultProperties(), false);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if(access(systemPropertiesFile.c_str(), R_OK) == 0)
|
else if(access(systemPropertiesFile.c_str(), R_OK) == 0)
|
||||||
{
|
{
|
||||||
set.load(systemPropertiesFile, &Console::defaultProperties(), false);
|
set.load(systemPropertiesFile, &Console::defaultProperties(), false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cerr << "ERROR: Couldn't find stella.pro file." << endl;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1222,6 +1262,16 @@ void handleCommandLineArguments(int argc, char* argv[])
|
||||||
|
|
||||||
theDesiredVolume = volume;
|
theDesiredVolume = volume;
|
||||||
}
|
}
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
else if(string(argv[i]) == "-ssdir")
|
||||||
|
{
|
||||||
|
theSnapShotDir = argv[++i];
|
||||||
|
}
|
||||||
|
else if(string(argv[i]) == "-ssname")
|
||||||
|
{
|
||||||
|
theSnapShotName = argv[++i];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cout << "Undefined option " << argv[i] << endl;
|
cout << "Undefined option " << argv[i] << endl;
|
||||||
|
@ -1382,6 +1432,16 @@ void parseRCOptions(istream& in)
|
||||||
|
|
||||||
theDesiredVolume = volume;
|
theDesiredVolume = volume;
|
||||||
}
|
}
|
||||||
|
#ifdef IMLIB2_SNAPSHOT
|
||||||
|
else if(key == "ssdir")
|
||||||
|
{
|
||||||
|
theSnapShotDir = value;
|
||||||
|
}
|
||||||
|
else if(key == "ssname")
|
||||||
|
{
|
||||||
|
theSnapShotName = value;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1440,7 +1500,11 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
// Create a properties set for us to use and set it up
|
// Create a properties set for us to use and set it up
|
||||||
PropertiesSet propertiesSet;
|
PropertiesSet propertiesSet;
|
||||||
setupProperties(propertiesSet);
|
if(!setupProperties(propertiesSet))
|
||||||
|
{
|
||||||
|
delete[] image;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
// Create a sound object for use with the console
|
// Create a sound object for use with the console
|
||||||
SoundUnix sound(theDesiredVolume);
|
SoundUnix sound(theDesiredVolume);
|
||||||
|
|
Loading…
Reference in New Issue