[Scummvm-cvs-logs] CVS: scummvm/backends/morphos morphos_start.cpp,1.11,1.12

Ruediger Hanke tomjoad at users.sourceforge.net
Thu Jan 30 14:33:02 CET 2003


Update of /cvsroot/scummvm/scummvm/backends/morphos
In directory sc8-pr-cvs1:/tmp/cvs-serv29547

Modified Files:
	morphos_start.cpp 
Log Message:
Added couple of options to MorphOS startup

Index: morphos_start.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos_start.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- morphos_start.cpp	25 Dec 2002 11:47:16 -0000	1.11
+++ morphos_start.cpp	30 Jan 2003 22:32:26 -0000	1.12
@@ -43,20 +43,23 @@
 extern "C" WBStartup *_WBenchMsg;
 
 // For command line parsing
-static STRPTR usageTemplate = "STORY,DATAPATH/K,WINDOW/S,SCALER/K,AMIGA/S,MIDIUNIT/K/N,MUSIC/K,MUSICVOL/K/N,SFXVOL/K/N,TEMPO/K/N,TALKSPEED/K/N,NOSUBTITLES=NST/S";
-typedef enum { USG_STORY = 0,	 USG_DATAPATH,  USG_WINDOW,  USG_SCALER, 	  USG_AMIGA,  USG_MIDIUNIT,  USG_MUSIC,   USG_MUSICVOL, USG_SFXVOL,    USG_TEMPO,   USG_TALKSPEED, USG_NOSUBTITLES } usageFields;
-static LONG	args[13] =  { (ULONG) NULL, (ULONG) NULL, FALSE, (ULONG) NULL, false, (ULONG) NULL, (ULONG) NULL, (ULONG) NULL, (ULONG) NULL,	(ULONG) NULL, (ULONG) NULL, false };
+static STRPTR usageTemplate = "STORY,DATAPATH/K,WINDOW/S,SCALER/K,AMIGA/S,MIDIUNIT/K/N,MUSIC/K,MASTERVOL/K/N,MUSICVOL/K/N,SFXVOL/K/N,TEMPO/K/N,TALKSPEED/K/N,LANGUAGE/K,NOSUBTITLES=NST/S, DEBUGLEVEL=DBGLVL/K/N, DUMPSCRIPTS/S";
+typedef enum { USG_STORY = 0, USG_DATAPATH, USG_WINDOW, USG_SCALER, USG_AMIGA, USG_MIDIUNIT, USG_MUSIC, USG_MASTERVOL, USG_MUSICVOL, USG_SFXVOL, USG_TEMPO, USG_TALKSPEED, USG_LANGUAGE, USG_NOSUBTITLES, USG_DEBUGLEVEL, USG_DUMPSCRIPTS, USG_MAX } usageFields;
+static LONG	args[USG_MAX];
 static RDArgs *ScummArgs = NULL;
 
 static char*ScummStory = NULL;
 static char*ScummPath = NULL;
+static char*ScummLang = NULL;
 	  STRPTR ScummMusicDriver = NULL;
 MidiDriver* EtudeMidiDriver = NULL;
 		 LONG ScummMidiUnit = 0;
+static LONG ScummMasterVolume = 0;
 static LONG ScummMidiVolume = 0;
 static LONG ScummMidiTempo = 0;
 static LONG ScummSfxVolume = 0;
 static LONG ScummTalkSpeed = 0;
+static LONG ScummDebugLevel = 0;
 static SCALERTYPE ScummGfxScaler = ST_INVALID;
 
 static BPTR OrigDirLock = 0;
@@ -194,6 +197,17 @@
 	if (ToolValue)
 		ScummMidiUnit = atoi(ToolValue);
 
+	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "MASTERVOL");
+	if (ToolValue)
+	{
+		int vol = atoi(ToolValue);
+		if (vol >= 0 && vol <= 100)
+		{
+			ScummMasterVolume = vol;
+			args[USG_MASTERVOL] = (ULONG) &ScummMasterVolume;
+		}
+	}
+
 	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "MUSICVOL");
 	if (ToolValue)
 	{
@@ -230,6 +244,16 @@
 		args[USG_TALKSPEED] = (ULONG) &ScummMidiTempo;
 	}
 
+	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "LANGUAGE");
+	if (ToolValue)
+	{
+		if (ScummLang)
+			FreeVec(ScummLang);
+		ScummLang = (char *) AllocVec(strlen(ToolValue)+4, MEMF_PUBLIC);
+		strcpy(ScummLang, "-q");
+		strcat(ScummLang, ToolValue);
+	}
+
 	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "SUBTITLES");
 	if (ToolValue)
 	{
@@ -248,6 +272,19 @@
 			args[USG_AMIGA] = TRUE;
 	}
 
+	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "DEBUGLEVEL");
+	if (ToolValue)
+		ScummDebugLevel = atoi(ToolValue);
+
+	ToolValue = (char *) FindToolType(dobj->do_ToolTypes, "DUMPSCRIPTS");
+	if (ToolValue)
+	{
+		if (MatchToolValue(ToolValue, "YES"))
+			args[USG_DUMPSCRIPTS] = TRUE;
+		else if (MatchToolValue(ToolValue, "NO"))
+			args[USG_DUMPSCRIPTS] = FALSE;
+	}
+
 	FreeDiskObject(dobj);
 }
 
@@ -255,8 +292,9 @@
 
 int main()
 {
-	char *argv[20];
-	char musicvol[6], sfxvol[6], talkspeed[12], tempo[12], scaler[14];
+	char *argv[30];
+	char mastervol[6], musicvol[6], sfxvol[6], talkspeed[12], tempo[12], scaler[14];
+	char dbglvl[6];
 	int argc = 0;
 
 	InitSemaphore(&ScummSoundThreadRunning);
@@ -265,6 +303,7 @@
 	g_scumm = NULL;
 	atexit(&close_resources);
 
+	memset(args, '\0', sizeof (args));
 	if (_WBenchMsg == NULL)
 	{
 		/* Parse the command line here */
@@ -306,6 +345,9 @@
 		if (args[USG_TEMPO])
 			ScummMidiTempo = *((LONG *) args[USG_TEMPO]);
 
+		if (args[USG_MASTERVOL])
+			ScummMasterVolume = *((LONG *) args[USG_MASTERVOL]);
+
 		if (args[USG_MUSICVOL])
 			ScummMidiVolume = *((LONG *) args[USG_MUSICVOL]);
 
@@ -314,6 +356,16 @@
 
 		if (args[USG_TALKSPEED])
 			ScummTalkSpeed = *((LONG *) args[USG_TALKSPEED]);
+
+		if (args[USG_LANGUAGE])
+		{
+			ScummLang = (char *) AllocVec(strlen((char *) args[USG_LANGUAGE])+4, MEMF_PUBLIC);
+			strcpy(ScummLang, "-q");
+			strcat(ScummLang, (char *) args[USG_LANGUAGE]);
+		}
+
+		if (args[USG_DEBUGLEVEL])
+			ScummDebugLevel = *((LONG *) args[USG_DEBUGLEVEL]);
 	}
 	else
 	{
@@ -346,7 +398,12 @@
 	}
 	else
 		argv[argc++] = "-gsuper2xsai";
-	if (args[USG_MUSICVOL] && ScummMidiVolume >= 0 && ScummMidiVolume <= 100)
+	if (args[USG_MASTERVOL] && ScummMasterVolume >= 0 && ScummMasterVolume <= 255)
+	{
+		sprintf(mastervol, "-o%ld", ScummMasterVolume);
+		argv[argc++] = mastervol;
+	}
+	if (args[USG_MUSICVOL] && ScummMidiVolume >= 0 && ScummMidiVolume <= 255)
 	{
 		sprintf(musicvol, "-m%ld", ScummMidiVolume);
 		argv[argc++] = musicvol;
@@ -365,6 +422,13 @@
 	{
 		sprintf(talkspeed, "-y%ld", ScummTalkSpeed);
 		argv[argc++] = talkspeed;
+	}
+	if (ScummLang) 				argv[argc++] = ScummLang;
+	if (args[USG_DUMPSCRIPTS]) argv[argc++] = "-u";
+	if (args[USG_DEBUGLEVEL])
+	{
+		sprintf(dbglvl, "-d%ld", ScummDebugLevel);
+		argv[argc++] = dbglvl;
 	}
 	if (ScummStory)
 		argv[argc++] = ScummStory;





More information about the Scummvm-git-logs mailing list