[Scummvm-cvs-logs] CVS: scummvm/backends/morphos morphos.cpp,1.29,1.30 morphos.h,1.17,1.18 morphos_sound.cpp,1.6,1.7 morphos_sound.h,1.2,1.3 morphos_start.cpp,1.15,1.16

Ruediger Hanke tomjoad at users.sourceforge.net
Tue Aug 5 11:18:08 CEST 2003


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

Modified Files:
	morphos.cpp morphos.h morphos_sound.cpp morphos_sound.h 
	morphos_start.cpp 
Log Message:
Hotfixes ...

Index: morphos.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- morphos.cpp	2 Aug 2003 00:36:37 -0000	1.29
+++ morphos.cpp	5 Aug 2003 18:17:38 -0000	1.30
@@ -75,16 +75,15 @@
 #define BLOCKS_Y			(ScummBufferHeight/BLOCKSIZE_Y)
 #define BLOCK_ID(x, y)  ((y/BLOCKSIZE_Y)*BLOCKS_X+(x/BLOCKSIZE_X))
 
-OSystem_MorphOS *OSystem_MorphOS::create(int game_id, SCALERTYPE gfx_scaler, bool full_screen)
+OSystem_MorphOS *OSystem_MorphOS::create(SCALERTYPE gfx_scaler, bool full_screen)
 {
-	OSystem_MorphOS *syst = new OSystem_MorphOS(game_id, gfx_scaler, full_screen);
+	OSystem_MorphOS *syst = new OSystem_MorphOS(gfx_scaler, full_screen);
 
 	return syst;
 }
 
-OSystem_MorphOS::OSystem_MorphOS(int game_id, SCALERTYPE gfx_mode, bool full_screen)
+OSystem_MorphOS::OSystem_MorphOS(SCALERTYPE gfx_mode, bool full_screen)
 {
-	GameID = game_id;
 	ScummScreen = NULL;
 	ScummWindow = NULL;
 	ScummBuffer = NULL;
@@ -364,6 +363,9 @@
 		{
 			CONST_STRPTR *ids = NULL, *names = NULL;
 
+			if (g_scumm)
+				GameID = g_scumm->_gameId;
+
 			switch (GameID)
 			{
 				case GID_MONKEY:
@@ -467,7 +469,8 @@
 
 void OSystem_MorphOS::stop_cdrom()
 {
-	CDDA_Stop(CDrive);
+	if (CDrive)
+		CDDA_Stop(CDrive);
 }
 
 bool OSystem_MorphOS::poll_cdrom()
@@ -825,14 +828,10 @@
 				}
 				else if (MapRawKey(&FakedIEvent, &charbuf, 1, NULL) == 1)
 				{
-					if (qual == KBD_CTRL)
+					if (qual == KBD_CTRL && charbuf == 'z')
 					{
-						switch (charbuf)
-						{
-							case 'z':
-								ReplyMsg((Message *) ScummMsg);
-								quit();
-						}
+						event->event_code = EVENT_QUIT;
+						break;
 					}
 					else if (qual == KBD_ALT)
 					{
@@ -846,8 +845,8 @@
 						}
 						else if (charbuf == 'x')
 						{
-							ReplyMsg((Message *) ScummMsg);
-							quit();
+							event->event_code = EVENT_QUIT;
+							break;
 						}
 						else if (charbuf == 0x0d)
 						{
@@ -933,8 +932,8 @@
 			}
 
 			case IDCMP_CLOSEWINDOW:
-				ReplyMsg((Message *)ScummMsg);
-				exit(0);
+				event->event_code = EVENT_QUIT;
+				break;
 		}
 
 		if (ScummMsg)

Index: morphos.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- morphos.h	31 Jul 2003 12:33:32 -0000	1.17
+++ morphos.h	5 Aug 2003 18:17:38 -0000	1.18
@@ -37,7 +37,7 @@
 class OSystem_MorphOS : public OSystem
 {
 	public:
-					OSystem_MorphOS(int game_id, SCALERTYPE gfx_mode, bool full_screen);
+					OSystem_MorphOS(SCALERTYPE gfx_mode, bool full_screen);
 		virtual ~OSystem_MorphOS();
 
 		// Set colors of the palette
@@ -124,7 +124,7 @@
 		// Quit
 		virtual void quit();
 
-		static OSystem_MorphOS *create(int game_id, SCALERTYPE gfx_scaler, bool full_screen);
+		static OSystem_MorphOS *create(SCALERTYPE gfx_scaler, bool full_screen);
 
 		static bool OpenATimer(MsgPort **port, IORequest **req, ULONG unit, bool required = true);
 

Index: morphos_sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos_sound.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- morphos_sound.cpp	25 Dec 2002 21:44:59 -0000	1.6
+++ morphos_sound.cpp	5 Aug 2003 18:17:38 -0000	1.7
@@ -55,9 +55,16 @@
 
 		 Device        *EtudeBase = NULL;
 
+bool etude_available()
+{
+	bool avail = init_morphos_music(ScummMidiUnit, ETUDEF_DIRECT);
+	if (avail)
+		exit_morphos_music();
+	return avail;
+}
+
 bool init_morphos_music(ULONG MidiUnit, ULONG DevFlags)
 {
-	MidiUnit = ScummMidiUnit;	// Ugly fix, but ...
 	ScummMidiPort = CreateMsgPort();
 	if (ScummMidiPort)
 	{
@@ -83,10 +90,7 @@
 	}
 
 	if (!ScummMidiRequest)
-	{
-		warning("Could not open Etude - music will not play");
 		return false;
-	}
 
 	return true;
 }

Index: morphos_sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos_sound.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- morphos_sound.h	2 Oct 2002 23:30:37 -0000	1.2
+++ morphos_sound.h	5 Aug 2003 18:17:38 -0000	1.3
@@ -32,6 +32,7 @@
 int morphos_sound_thread(OSystem_MorphOS *syst, ULONG SampleType);
 bool init_morphos_music(ULONG MidiUnit, ULONG DevFlags);
 void exit_morphos_music();
+bool etude_available();
 
 extern SignalSemaphore ScummMusicThreadRunning;
 extern SignalSemaphore ScummSoundThreadRunning;

Index: morphos_start.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/morphos/morphos_start.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- morphos_start.cpp	23 Jul 2003 19:19:18 -0000	1.15
+++ morphos_start.cpp	5 Aug 2003 18:17:38 -0000	1.16
@@ -35,6 +35,7 @@
 
 #include "stdafx.h"
 #include "scumm/scumm.h"
+#include "common/gameDetector.h"
 #include "common/scaler.h"
 #include "sound/mididrv.h"
 #include "morphos.h"
@@ -91,32 +92,47 @@
 			break;
 	}
 
-	TheSystem = OSystem_MorphOS::create(game_id, gfx_scaler, full_screen);
+	TheSystem = OSystem_MorphOS::create(gfx_scaler, full_screen);
 	return TheSystem;
 }
 
 void close_resources()
 {
 	if (TheSystem)
+	{
 		delete TheSystem;
-
-	if (g_engine)
-		delete g_engine;
+		TheSystem = NULL;
+	}
 
 	if (ScummPath)
+	{
 		FreeVec(ScummPath);
+		ScummPath = NULL;
+	}
 
 	if (ScummStory)
+	{
 		FreeVec(ScummStory);
+		ScummStory = NULL;
+	}
 
 	if (ScummArgs)
+	{
 		FreeArgs(ScummArgs);
+		ScummArgs = NULL;
+	}
 
 	if (OrigDirLock)
+	{
 		CurrentDir(OrigDirLock);
+		OrigDirLock = NULL;
+	}
 
 	if (CDDABase)
+	{
 		CloseLibrary(CDDABase);
+		CDDABase = NULL;
+	}
 }
 
 static STRPTR FindMusicDriver(STRPTR argval)
@@ -389,6 +405,13 @@
 	if (args[USG_NOSUBTITLES]) argv[argc++] = "-n";
 	if (args[USG_AMIGA]) 		argv[argc++] = "-a";
 	if (args[USG_MUSIC]) 		argv[argc++] = ScummMusicDriver;
+	else
+	{
+		if (etude_available())
+			argv[argc++] = "-eetude";
+		else
+			argv[argc++] = "-eadlib";
+	}
 	if (ScummGfxScaler != ST_INVALID)
 	{
 		sprintf(scaler, "-g%s", MorphOSScaler::GetParamName(ScummGfxScaler));





More information about the Scummvm-git-logs mailing list