diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/README scummvm_cvs/scummvm/README
--- scummvm_cvs_pure/scummvm/README	2005-04-23 16:52:26.000000000 +0300
+++ scummvm_cvs/scummvm/README	2005-05-09 17:36:08.140625000 +0300
@@ -1247,7 +1247,15 @@
           etc. via Fink and into /sw. If you have installed SDL
           in another way, you'll have to edit the Makefile).
 
-
+    AmigaOS 4 (Cross-compiling with Cygwin):
+        * Make sure that you have SDL installed, you may also need 
+          libogg, libvorbis, libvorbisfile, zlib, libmad.
+        * Type ./configure --host=ppc-amigaos
+        * If you got an error about sdl-config, use --with-sdl-prefix
+          parameter to set the path.
+        * Check 'config.mak' file and if everything seems to fine:
+        * Run 'make'.
+        * Cross-compiling with Linux may be as easy.
 
 ------------------------------------------------------------------------
 Good Luck and Happy Adventuring!
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/backends/fs/amigaos4/amigaos4-fs.cpp scummvm_cvs/scummvm/backends/fs/amigaos4/amigaos4-fs.cpp
--- scummvm_cvs_pure/scummvm/backends/fs/amigaos4/amigaos4-fs.cpp	1970-01-01 02:00:00.000000000 +0200
+++ scummvm_cvs/scummvm/backends/fs/amigaos4/amigaos4-fs.cpp	2005-05-09 16:24:50.281250000 +0300
@@ -0,0 +1,377 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2005 The ScummVM project, contribution by Hans-Jörg Frieden and Juha Niemimäki
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#if defined(__amigaos4__)
+#ifdef __USE_INLINE__
+#undef __USE_INLINE__
+#endif
+
+#include <proto/exec.h>
+#include <proto/dos.h>
+#include <stdio.h>
+
+#ifndef USE_NEWLIB
+#include <strings.h>
+#endif
+
+#include <stdafx.h>
+
+#include "util.h"
+
+#include "base/engine.h"
+#include "../fs.h"
+
+#define ENTER() /* debug(6, "Enter\n") */
+#define LEAVE() /* debug(6, "Leave\n") */
+
+
+const uint32 ExAllBufferSize = 40960;
+
+class AmigaOSFilesystemNode : public AbstractFilesystemNode {
+	protected:
+		BPTR _pFileLock;
+		String _sDisplayName;
+		bool _bIsDirectory;
+		bool _bIsValid;
+		String _sPath;
+
+	public:
+		AmigaOSFilesystemNode();
+		AmigaOSFilesystemNode(const AmigaOSFilesystemNode *pNode);
+		AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayName = 0);
+		AmigaOSFilesystemNode(const String &p);
+
+		~AmigaOSFilesystemNode();
+
+		virtual String displayName() const { return _sDisplayName; };
+		virtual bool isValid() const { return _bIsValid; };
+		virtual bool isDirectory() const { return _bIsDirectory; };
+		virtual String path() const { return _sPath; };
+
+		virtual FSList listDir(ListMode mode = kListDirectoriesOnly) const;
+		virtual FSList listVolumes(void) const;
+		virtual AbstractFilesystemNode *parent() const;
+		virtual AbstractFilesystemNode *clone() const { return new AmigaOSFilesystemNode(this); };
+};
+
+AbstractFilesystemNode *FilesystemNode::getRoot() {
+	return new AmigaOSFilesystemNode();
+}
+
+AbstractFilesystemNode *FilesystemNode::getNodeForPath(const String	&path) {
+	return new AmigaOSFilesystemNode(path);
+}
+
+AmigaOSFilesystemNode::AmigaOSFilesystemNode() {
+	ENTER();
+	_sDisplayName = "Available Disks";
+	_bIsValid = true;
+	_bIsDirectory = true;
+	_sPath = "";
+	_pFileLock = 0;
+	LEAVE();
+}
+
+
+AmigaOSFilesystemNode::AmigaOSFilesystemNode(const String &p) {
+	ENTER();
+
+	int len = 0, offset = p.size();
+	
+	assert(offset > 0);
+
+	_sPath = p;
+
+	// Extract last	component from path
+	const char *str = p.c_str();
+	
+	while (offset > 0 && (str[offset-1] == '/' || str[offset-1] == ':'))
+		offset--;
+
+	while (offset > 0 && (str[offset-1] != '/' && str[offset-1] != ':')) {
+		len++;
+		offset--;
+	}
+	
+	_sDisplayName = String(str + offset, len);
+
+	// Check whether it is a directory, and whether the file actually exists
+
+	struct FileInfoBlock *fib = (struct FileInfoBlock *)IDOS->AllocDosObject(DOS_FIB, NULL);
+	if (!fib) {
+		debug(6, "fib == 0\n");
+		LEAVE();
+		return;
+	}
+
+	BPTR pLock = IDOS->Lock( (char *)_sPath.c_str(), SHARED_LOCK);
+	if (pLock) {
+		if (IDOS->Examine(pLock, fib) != DOSFALSE) {
+			if (fib->fib_EntryType > 0)
+				_bIsDirectory = true;
+			else
+				_bIsDirectory = false;
+
+			if (_bIsDirectory) {
+				if (fib->fib_EntryType != ST_ROOT)
+					_sPath += "/";
+				
+				_pFileLock = IDOS->DupLock(pLock);
+				_bIsValid = (_pFileLock != 0);
+			}
+			else _bIsValid = true;
+		}
+	}
+
+	IDOS->FreeDosObject(DOS_FIB, fib);
+	LEAVE();
+}
+
+AmigaOSFilesystemNode::AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayName) {
+	ENTER();
+	int bufsize = 256;
+	_pFileLock = 0;
+
+	while (1) {
+		char *name = new char[bufsize];
+		if (IDOS->NameFromLock(pLock, name, bufsize) != DOSFALSE) {
+			_sPath = name;
+			_sDisplayName = pDisplayName ? pDisplayName : IDOS->FilePart(name);
+			delete name;
+			break;
+		}
+
+		if (IDOS->IoErr() != ERROR_LINE_TOO_LONG) {
+			_bIsValid = false;
+			debug(6, "Error\n");
+			LEAVE();
+			delete name;
+			return;
+		}
+		bufsize *= 2;
+		delete name;
+	}
+
+	_bIsValid =	false;
+
+	struct FileInfoBlock *fib = (struct	FileInfoBlock *)IDOS->AllocDosObject(DOS_FIB, NULL);
+	if (!fib) {
+		debug(6, "fib == 0\n");
+		LEAVE();
+		return;
+	}
+
+	if (IDOS->Examine(pLock, fib) != DOSFALSE) {
+		if (fib->fib_EntryType > 0)
+			_bIsDirectory = true;
+		else
+			_bIsDirectory = false;
+
+		if (_bIsDirectory) {
+			if (fib->fib_EntryType != ST_ROOT)
+				_sPath += "/";
+
+			_pFileLock = IDOS->DupLock(pLock);
+			_bIsValid = (_pFileLock != 0);
+		}
+		else _bIsValid = true;
+	}
+
+	IDOS->FreeDosObject(DOS_FIB, fib);
+	LEAVE();
+}
+
+AmigaOSFilesystemNode::AmigaOSFilesystemNode(const AmigaOSFilesystemNode *node) {
+	ENTER();
+	_sDisplayName = node->_sDisplayName;
+	_bIsValid = node->_bIsValid;
+	_bIsDirectory = node->_bIsDirectory;
+	_sPath = node->_sPath;
+	_pFileLock = IDOS->DupLock(node->_pFileLock);
+	LEAVE();
+}
+
+AmigaOSFilesystemNode::~AmigaOSFilesystemNode() {
+	ENTER();
+	if (_pFileLock)
+		IDOS->UnLock(_pFileLock);
+	LEAVE();
+}
+
+FSList AmigaOSFilesystemNode::listDir(ListMode mode) const {
+	ENTER();
+
+	if (!_bIsValid) {
+		debug(6, "Invalid node\n");
+		LEAVE();
+		//return 0;
+	}
+
+	if (!_bIsDirectory) {
+		debug(6, "Not a directory\n");
+		LEAVE();
+		//return 0;
+	}
+
+	if (_pFileLock == 0) {
+		debug(6, "Root node\n");
+		LEAVE();
+		return listVolumes();
+	}
+
+	//FSList *myList = new FSList();
+	FSList myList;
+
+	struct ExAllControl *eac;
+	struct ExAllData *data, *ead;
+	BOOL bExMore;
+
+	eac = (struct ExAllControl *)IDOS->AllocDosObject(DOS_EXALLCONTROL, 0);
+	if (eac) {
+		data = (struct ExAllData *)IExec->AllocVec(ExAllBufferSize, MEMF_ANY);
+		if (data) {
+			eac->eac_LastKey = 0;
+			do {
+				bExMore = IDOS->ExAll(_pFileLock, data,	ExAllBufferSize,
+					ED_TYPE, eac);
+
+				LONG error = IDOS->IoErr();
+				if (!bExMore && error != ERROR_NO_MORE_ENTRIES)
+					break;
+
+				if (eac->eac_Entries ==	0)
+					continue;
+
+				ead	= data;
+				do {
+					AmigaOSFilesystemNode *entry;
+					String full_path;
+					BPTR lock;
+
+					if ((ead->ed_Type > 0 && (mode & kListDirectoriesOnly)) ||
+						(ead->ed_Type < 0 && (mode & kListFilesOnly))) {
+						full_path = _sPath;
+						full_path += (char*)ead->ed_Name;
+						lock = IDOS->Lock((char *)full_path.c_str(), SHARED_LOCK);
+						if (lock) {
+							entry = new AmigaOSFilesystemNode(lock, (char *)ead->ed_Name);
+							if (entry) {
+								if (entry->isValid())
+									myList.push_back(wrap(entry));
+								else
+									delete entry;
+							}
+							IDOS->UnLock(lock);
+						}
+					}
+					ead = ead->ed_Next;
+				} while (ead);
+			} while (bExMore);
+
+			IExec->FreeVec(data);
+		}
+
+		IDOS->FreeDosObject(DOS_EXALLCONTROL, eac);
+	}
+	LEAVE();
+	return myList;
+}
+
+AbstractFilesystemNode *AmigaOSFilesystemNode::parent() const {
+	ENTER();
+	AmigaOSFilesystemNode *node;
+
+	if (!_bIsDirectory) {
+		debug(6, "No directory\n");
+		LEAVE();
+		return 0;
+	}
+
+	if (_pFileLock == 0) {
+		debug(6, "Root node\n");
+		LEAVE();
+		return clone();
+	}
+
+	BPTR parent = IDOS->ParentDir(_pFileLock);
+	if (parent) {
+		node = new AmigaOSFilesystemNode(parent);
+		IDOS->UnLock(parent);
+	}
+	else
+		node = new AmigaOSFilesystemNode();
+
+	LEAVE();
+	return node;
+}
+
+FSList AmigaOSFilesystemNode::listVolumes(void)	const {
+	ENTER();
+	//FSList *myList = new FSList();
+	FSList myList;
+
+	struct DosList *dosList;
+
+	const uint32 lockFlags = LDF_READ | LDF_VOLUMES;
+	char name[256];
+
+	dosList = IDOS->LockDosList(lockFlags);
+	if (!dosList) {
+		debug(6, "Cannot lock dos list\n");
+		LEAVE();
+		return myList;
+	}
+
+
+	dosList = IDOS->NextDosEntry(dosList, LDF_VOLUMES);
+	while (dosList) {
+		if (dosList->dol_Type == DLT_VOLUME &&
+			dosList->dol_Name &&
+			dosList->dol_Task) {
+			AmigaOSFilesystemNode *entry;
+			const char *volname = (const char *)BADDR(dosList->dol_Name)+1;
+			const char *devname = (const char *)((struct Task *)dosList->dol_Task->mp_SigTask)->tc_Node.ln_Name;
+
+			strcpy(name, volname);
+			strcat(name, ":");
+
+			BPTR volume_lock = IDOS->Lock(name,	SHARED_LOCK);
+			if (volume_lock) {
+				sprintf(name, "%s (%s)", volname, devname);
+				entry = new AmigaOSFilesystemNode(volume_lock, name);
+				if (entry) {
+					if (entry->isValid())
+						myList.push_back(wrap(entry));
+					else
+						delete entry;
+				}
+				IDOS->UnLock(volume_lock);
+			}
+		}
+		dosList	= IDOS->NextDosEntry(dosList, LDF_VOLUMES);
+	}
+
+	IDOS->UnLockDosList(lockFlags);
+
+	LEAVE();
+	return myList;
+}
+
+#endif
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/backends/module.mk scummvm_cvs/scummvm/backends/module.mk
--- scummvm_cvs_pure/scummvm/backends/module.mk	2005-01-11 22:40:10.000000000 +0200
+++ scummvm_cvs/scummvm/backends/module.mk	2005-05-09 15:57:36.578125000 +0300
@@ -5,6 +5,7 @@
 	backends/fs/posix/posix-fs.o \
 	backends/fs/morphos/abox-fs.o \
 	backends/fs/windows/windows-fs.o \
+	backends/fs/amigaos4/amigaos4-fs.o \
 	backends/midi/alsa.o \
 	backends/midi/coreaudio.o \
 	backends/midi/morphos.o \
@@ -19,6 +20,7 @@
 	backends/fs/posix \
 	backends/fs/morphos \
 	backends/fs/windows \
+	backends/fs/amigaos4 \
 	backends/midi
 
 # Include common rules 
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/base/gameDetector.cpp scummvm_cvs/scummvm/base/gameDetector.cpp
--- scummvm_cvs_pure/scummvm/base/gameDetector.cpp	2005-04-24 15:21:52.000000000 +0300
+++ scummvm_cvs/scummvm/base/gameDetector.cpp	2005-05-09 15:59:04.687500000 +0300
@@ -617,7 +617,7 @@
 		warning("No path was provided. Assuming the data files are in the current directory");
 		gameDataPath = "./";
 	} else if (gameDataPath.lastChar() != '/'
-#ifdef __MORPHOS__
+#if defined(__MORPHOS__) || defined(__amigaos4__)
 					&& gameDataPath.lastChar() != ':'
 #endif
 					&& gameDataPath.lastChar() != '\\') {
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/base/main.cpp scummvm_cvs/scummvm/base/main.cpp
--- scummvm_cvs_pure/scummvm/base/main.cpp	2005-05-05 15:03:40.000000000 +0300
+++ scummvm_cvs/scummvm/base/main.cpp	2005-05-09 16:08:42.687500000 +0300
@@ -122,6 +122,11 @@
 #endif
 	;
 
+#if defined(__amigaos4__)
+// Set the stack cookie, 640 KB should be enough for everyone
+const char* stackCookie = "$STACK: 655360\0";
+#endif
+
 #if defined(WIN32) && defined(NO_CONSOLE)
 #include <cstdio>
 #define STDOUT_FILE	TEXT("stdout.txt")
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/file.cpp scummvm_cvs/scummvm/common/file.cpp
--- scummvm_cvs_pure/scummvm/common/file.cpp	2005-04-23 12:21:41.000000000 +0300
+++ scummvm_cvs/scummvm/common/file.cpp	2005-05-09 16:03:12.437500000 +0300
@@ -85,6 +85,17 @@
 		file = fopen(buf, mode);
 	}
 
+#ifdef __amigaos4__
+	//
+	// Work around for possibility that someone uses AmigaOS "newlib" build with SmartFileSystem (blocksize 512 bytes), leading
+	// to buffer size being only 512 bytes. "Clib2" sets the buffer size to 8KB, resulting smooth movie playback. This forces the buffer
+	// to be enough also when using "newlib" compile on SFS.
+	//
+	if (file) {
+		setvbuf(file, NULL, _IOFBF, 8192);
+	}
+#endif
+
 	return file;
 }
 
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/savefile.cpp scummvm_cvs/scummvm/common/savefile.cpp
--- scummvm_cvs_pure/scummvm/common/savefile.cpp	2005-05-09 02:45:17.000000000 +0300
+++ scummvm_cvs/scummvm/common/savefile.cpp	2005-05-09 16:03:45.156250000 +0300
@@ -156,7 +156,7 @@
 	const int dirLen = strlen(buf);
 
 	if (dirLen > 0) {
-#ifdef __MORPHOS__
+#if defined(__MORPHOS__) || defined(__amigaos4__)
 		if (buf[dirLen-1] != ':' && buf[dirLen-1] != '/')
 #endif
 
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/scaler/hq2x.cpp scummvm_cvs/scummvm/common/scaler/hq2x.cpp
--- scummvm_cvs_pure/scummvm/common/scaler/hq2x.cpp	2005-05-09 00:49:32.000000000 +0300
+++ scummvm_cvs/scummvm/common/scaler/hq2x.cpp	2005-05-09 16:07:49.562500000 +0300
@@ -42,6 +42,20 @@
 #else
 
 #ifdef HAS_ALTIVEC
+
+#ifdef __amigaos4__
+#include <proto/exec.h>
+#include <altivec.h>
+static bool isAltiVecAvailable() {
+	uint32 vecUnit;
+	IExec->GetCPUInfo(GCIT_VectorUnit, &vecUnit, TAG_DONE);
+	if (vecUnit == VECTORTYPE_NONE)
+		return false;
+	else
+		return true;
+}
+#else
+
 #include <sys/sysctl.h> 
 
 static bool isAltiVecAvailable()  {
@@ -54,6 +68,7 @@
 	return false; 
 }
 #endif
+#endif
 
 #define PIXEL00_0	*(q) = w5;
 #define PIXEL00_10	*(q) = interpolate16_2<bitFormat,3,1>(w5, w1);
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/scaler/hq3x.cpp scummvm_cvs/scummvm/common/scaler/hq3x.cpp
--- scummvm_cvs_pure/scummvm/common/scaler/hq3x.cpp	2005-05-09 00:49:40.000000000 +0300
+++ scummvm_cvs/scummvm/common/scaler/hq3x.cpp	2005-05-09 16:09:55.546875000 +0300
@@ -42,6 +42,19 @@
 #else
 
 #ifdef HAS_ALTIVEC
+
+#ifdef __amigaos4__
+#include <proto/exec.h>
+static bool isAltiVecAvailable() {
+	uint32 vecUnit;
+	IExec->GetCPUInfo(GCIT_VectorUnit, &vecUnit, TAG_DONE);
+	if (vecUnit == VECTORTYPE_NONE)
+		return false;
+	else
+		return true;
+}
+#else
+
 #include <sys/sysctl.h> 
 
 static bool isAltiVecAvailable()  {
@@ -54,6 +67,7 @@
 	return false; 
 }
 #endif
+#endif
 
 #define PIXEL00_1M  *(q) = interpolate16_2<bitFormat,3,1>(w5, w1);
 #define PIXEL00_1U  *(q) = interpolate16_2<bitFormat,3,1>(w5, w2);
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/scummsys.h scummvm_cvs/scummvm/common/scummsys.h
--- scummvm_cvs_pure/scummvm/common/scummsys.h	2005-03-31 08:35:03.000000000 +0300
+++ scummvm_cvs/scummvm/common/scummsys.h	2005-05-09 16:12:44.937500000 +0300
@@ -323,6 +323,32 @@
 	#define fsize(a)			ps2_fsize(a)
 
 	extern void ps2_disableHandleCaching(void);
+
+#elif defined (__amigaos4__)
+	#include <exec/types.h>
+
+	#define	scumm_stricmp strcasecmp
+	#define	scumm_strnicmp strncasecmp
+
+	#define	CHECK_HEAP
+
+	#define	SCUMM_BIG_ENDIAN
+
+	// You need to set this manually if necessary
+	#define	SCUMM_NEED_ALIGNMENT
+
+	#define	FORCEINLINE	inline
+	#define	CDECL
+
+	#ifndef	HAVE_CONFIG_H
+	typedef	unsigned char byte;
+	typedef	unsigned int uint;
+	#endif
+
+	#define	START_PACK_STRUCTS
+	#define	END_PACK_STRUCTS
+	#define	GCC_PACK __attribute__((packed))
+	#define	NORETURN __attribute__((__noreturn__))
 #else
 	#error No system type defined
 #endif
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/common/stdafx.h scummvm_cvs/scummvm/common/stdafx.h
--- scummvm_cvs_pure/scummvm/common/stdafx.h	2005-03-31 08:35:03.000000000 +0300
+++ scummvm_cvs/scummvm/common/stdafx.h	2005-05-09 16:14:42.250000000 +0300
@@ -111,11 +111,13 @@
 #endif
 #if !defined(macintosh)
 #include <sys/types.h>
-#if !defined(__PLAYSTATION2__)
+#if !defined(__PLAYSTATION2__) && !defined(__amigaos4__)
 #include <sys/uio.h>
 #endif
+#if !defined(__amigaos4__)
 #include <sys/param.h>
 #endif
+#endif
 #if !defined (__BEOS__)
 #include <unistd.h>
 #endif
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/configure scummvm_cvs/scummvm/configure
--- scummvm_cvs_pure/scummvm/configure	2005-05-07 19:29:11.000000000 +0300
+++ scummvm_cvs/scummvm/configure	2005-05-09 16:36:39.687500000 +0300
@@ -434,6 +434,10 @@
 	_host_os=riscos
 	_host_cpu=arm
 	;;
+ppc-amigaos)
+	_host_os=amigaos
+	_host_cpu=ppc
+	;;
 *)
 	guessed_host=`$_srcdir/config.guess`
 	_host_cpu=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -613,6 +617,16 @@
 			type_2_byte='short'
 			type_4_byte='int'
 			;;
+		ppc-amigaos)
+			echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
+			_def_endianness='#define SCUMM_BIG_ENDIAN'
+			_def_align='#define	SCUMM_NEED_ALIGNMENT'
+			type_1_byte='char'
+			type_2_byte='short'
+			type_4_byte='long'
+			CXXFLAGS="$CFLAGS -newlib -mstrict-align -mcpu=750 -mtune=7400"
+			LDFLAGS="$LDFLAGS -newlib"
+			;;
 		*)
 			echo "Cross-compiling to unknown target, please add your target to configure."
 			exit 1
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/gui/options.cpp scummvm_cvs/scummvm/gui/options.cpp
--- scummvm_cvs_pure/scummvm/gui/options.cpp	2005-04-23 00:20:22.000000000 +0300
+++ scummvm_cvs/scummvm/gui/options.cpp	2005-05-09 16:15:37.312500000 +0300
@@ -33,7 +33,7 @@
 #include "sound/mididrv.h"
 #include "sound/mixer.h"
 
-#if (!( defined(__PALM_OS__) || defined(__DC__) || defined(__GP32__)) && !defined(_MSC_VER))
+#if (!( defined(__PALM_OS__) || defined(__DC__) || defined(__GP32__) || defined(__amigaos4__) ) && !defined(_MSC_VER))
 #include <sys/param.h>
 #include <unistd.h>
 #endif
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/scumm/script_v90he.cpp scummvm_cvs/scummvm/scumm/script_v90he.cpp
--- scummvm_cvs_pure/scummvm/scumm/script_v90he.cpp	2005-05-08 13:59:32.000000000 +0300
+++ scummvm_cvs/scummvm/scumm/script_v90he.cpp	2005-05-09 17:11:52.437500000 +0300
@@ -2547,7 +2547,7 @@
 	case 2001:
 		// Used in football
 		debug(0, "o90_kernelGetFunctions: U32 code %d (args %d) %d", args[1], num - 2, args[2]);
-		push(_logicHE->dispatch(args[1], num - 2, &args[2]));
// capehill's note: casted to (int32*) because dispatch is declared so...
+		push(_logicHE->dispatch( args[1], num - 2, (int32*)&args[2]));
 		break;
 	default:
 		error("o90_kernelGetFunctions: default case %d", args[0]);
@@ -2613,7 +2613,7 @@
 	case 2001:
 		// Used in SoccerMLS/Soccer2004
 		debug(0, "o90_kernelSetFunctions: U32 code %d (args %d) %d", args[1], num - 2, args[2]);
-		_logicHE->dispatch(args[1], num - 2, &args[2]);
+		_logicHE->dispatch(args[1], num - 2, (int32*)&args[2]);
 		break;
 	default:
 		error("o90_kernelSetFunctions: default case %d (param count %d)", args[0], num);
Files scummvm_cvs_pure/scummvm/scummvm.bz2 and scummvm_cvs/scummvm/scummvm.bz2 differ
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/sound/softsynth/mt32/partialManager.cpp scummvm_cvs/scummvm/sound/softsynth/mt32/partialManager.cpp
--- scummvm_cvs_pure/scummvm/sound/softsynth/mt32/partialManager.cpp	2005-03-20 18:24:55.000000000 +0200
+++ scummvm_cvs/scummvm/sound/softsynth/mt32/partialManager.cpp	2005-05-09 17:20:43.843750000 +0300
@@ -19,7 +19,11 @@
  * IN THE SOFTWARE.
  */
 
+#ifdef __amigaos4__
+#include <strings.h>
+#else
 #include <memory.h>
+#endif
 
 #include "mt32emu.h"
 
diff -urwN -x .deps -x CVS scummvm_cvs_pure/scummvm/tools/credits.pl scummvm_cvs/scummvm/tools/credits.pl
--- scummvm_cvs_pure/scummvm/tools/credits.pl	2005-04-16 04:39:51.000000000 +0300
+++ scummvm_cvs/scummvm/tools/credits.pl	2005-05-09 16:35:10.359375000 +0300
@@ -329,6 +329,7 @@
 	add_person("Jamieson Christian", "jamieson630", "iMUSE, MIDI, all things musical");
 	add_person("Jerome Fisher", "KingGuppy", "MT-32 emulator");
 	add_person("Jochen Hoenicke", "hoenicke", "Speaker &amp; PCjr sound support, Adlib work");
+	add_person("Hans-J&ouml;rg Frieden", "", "Port: AmigaOS 4");
   end_section();
 
 
@@ -362,6 +363,7 @@
 	add_person("Daniel Schepler", "", "Final MI1 CD music support, initial Ogg Vorbis support");
 	add_person("Andr&eacute; Souza", "", "SDL-based OpenGL renderer");
 	add_person("Tim ???", "realmz", "Initial MI1 CD music support");
+	add_person("Juha Niemim&auml;ki", "", "AmigaOS 4 port maintaining");
   end_section();
 
 
