[Scummvm-cvs-logs] SF.net SVN: scummvm:[48459] tools/trunk

salty-horse at users.sourceforge.net salty-horse at users.sourceforge.net
Thu Apr 1 21:16:26 CEST 2010


Revision: 48459
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48459&view=rev
Author:   salty-horse
Date:     2010-04-01 19:16:26 +0000 (Thu, 01 Apr 2010)

Log Message:
-----------
Copy over some common/ code from scummvm, to fix amiga compilation

common/scummsys.h was copied in its entirety, to keep further synchronizations
simple. It has code that handles non-desktop platforms that will never be a
target for the tools.

Modified Paths:
--------------
    tools/trunk/common/scummsys.h
    tools/trunk/common/util.h
    tools/trunk/engines/kyra/kyra_ins.cpp
    tools/trunk/engines/mohawk/construct_mohawk.cpp
    tools/trunk/engines/queen/compress_queen.cpp
    tools/trunk/engines/scumm/compress_scumm_bun.cpp
    tools/trunk/engines/scumm/extract_mm_nes.cpp
    tools/trunk/engines/tucker/compress_tucker.cpp
    tools/trunk/sound/adpcm.cpp
    tools/trunk/sound/audiostream.cpp
    tools/trunk/sound/voc.h

Modified: tools/trunk/common/scummsys.h
===================================================================
--- tools/trunk/common/scummsys.h	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/common/scummsys.h	2010-04-01 19:16:26 UTC (rev 48459)
@@ -24,48 +24,187 @@
 #define COMMON_SCUMMSYS_H
 
 
-/*
- * Some useful types
- */
+#if defined(_WIN32_WCE) && _WIN32_WCE < 300
+	#define NONSTANDARD_PORT
+#endif
 
-typedef unsigned char byte;
-typedef unsigned int uint;
+#if defined(NONSTANDARD_PORT)
 
-typedef unsigned char uint8;
-typedef unsigned short uint16;
-typedef signed char int8;
-typedef signed short int16;
-#ifdef __amigaos4__
-#include <exec/types.h>
-#include <stdlib.h>
-#else
-typedef unsigned int uint32;
-typedef signed int int32;
+	// Ports which need to perform #includes and #defines visible in
+	// virtually all the source of ScummVM should do so by providing a
+	// "portdefs.h" header file (and not by directly modifying this
+	// header file).
+	#include <portdefs.h>
+#else // defined(NONSTANDARD_PORT)
+
+	#if defined(WIN32)
+
+		#ifdef _MSC_VER
+		// vsnprintf is already defined in Visual Studio 2008
+		#if (_MSC_VER < 1500)
+			#define vsnprintf _vsnprintf
+		#endif
+		#endif
+
+		#if !defined(_WIN32_WCE)
+
+		#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+		#define NOGDICAPMASKS
+		#define OEMRESOURCE
+		#define NONLS
+		#define NOICONS
+		#define NOMCX
+		#define NOPROFILER
+		#define NOKANJI
+		#define NOSERVICE
+		#define NOMETAFILE
+		#define NOCOMM
+		#define NOCRYPT
+		#define NOIME
+		#define NOATOM
+		#define NOCTLMGR
+		#define NOCLIPBOARD
+		#define NOMEMMGR
+		#define NOSYSMETRICS
+		#define NOMENUS
+		#define NOOPENFILE
+		#define NOWH
+		#define NOSOUND
+		#define NODRAWTEXT
+
+		#endif
+
+		#if defined(ARRAYSIZE)
+		// VS2005beta2 introduces new stuff in winnt.h
+		#undef ARRAYSIZE
+		#endif
+
+	#endif
+
+	#if defined(__QNXNTO__)
+	#include <strings.h>	/* For strcasecmp */
+	#endif
+
+	#include <stdio.h>
+	#include <stdlib.h>
+	#include <string.h>
+	#include <stdarg.h>
+	#include <assert.h>
+	#include <ctype.h>
+	#include <math.h>
+
 #endif
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <ctype.h>
-#include <math.h>
 
-/*
- * Various utility macros
- */
 
-#if defined(_MSC_VER)
+// Use config.h, generated by configure
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
 
+// make sure we really are compiling for WIN32
+#ifndef WIN32
+#undef _MSC_VER
+#endif
+
+
+// In the following we configure various targets, in particular those
+// which can't use our "configure" tool and hence don't use config.h.
+//
+// Some #defines that occur here frequently:
+// SCUMM_LITTLE_ENDIAN
+//    - Define this on a little endian target
+// SCUMM_BIG_ENDIAN
+//    - Define this on a big endian target
+// SCUMM_NEED_ALIGNMENT
+//    - Define this if your system has problems reading e.g. an int32 from an odd address
+// SCUMMVM_DONT_DEFINE_TYPES
+//    - Define this if you need to provide your own typedefs, e.g. because your
+//      system headers conflict with our typenames, or because you have odd
+//      type requirements.
+// SMALL_SCREEN_DEVICE
+//    - ...
+// ...
+
+// We define all types in config.h, so we don't want to typedef those types
+// here again!
+#ifdef HAVE_CONFIG_H
+#define SCUMMVM_DONT_DEFINE_TYPES
+#endif
+
+
+//
+// By default we try to use pragma push/pop to ensure various structs we use
+// are "packed". If your compiler doesn't support this pragma, you are in for
+// a problem. If you are lucky, there is a compiler switch, or another pragma,
+// doing the same thing -- in that case, try to modify common/pack-begin.h and
+// common/pack-end.h accordingly. Or maybe your port simply *always* packs
+// everything, in which case you could #undefine SCUMMVM_USE_PRAGMA_PACK.
+//
+// If neither is possible, tough luck. Try to contact the team, maybe we can
+// come up with a solution, though I wouldn't hold my breath on it :-/.
+//
+#define SCUMMVM_USE_PRAGMA_PACK
+
+
+#if defined(__SYMBIAN32__)
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define SCUMM_LITTLE_ENDIAN
+	#define SCUMM_NEED_ALIGNMENT
+
+	#define SMALL_SCREEN_DEVICE
+
+	// Enable Symbians own datatypes
+	// This is done for two reasons
+	// a) uint is already defined by Symbians libc component
+	// b) Symbian is using its "own" datatyping, and the Scummvm port
+	//    should follow this to ensure the best compability possible.
+	#define SCUMMVM_DONT_DEFINE_TYPES
+	typedef unsigned char byte;
+
+	typedef unsigned char uint8;
+	typedef signed char int8;
+
+	typedef unsigned short int uint16;
+	typedef signed short int int16;
+
+	typedef unsigned long int uint32;
+	typedef signed long int int32;
+
+#elif defined(_WIN32_WCE)
+
 	#define scumm_stricmp stricmp
 	#define scumm_strnicmp _strnicmp
 	#define snprintf _snprintf
 
 	#define SCUMM_LITTLE_ENDIAN
-	#pragma once
-	#pragma warning( disable : 4068 ) /* turn off "unknown pragma" warning */
-	#pragma warning( disable : 4996 ) /* turn off warnings about unsafe functions */
 
+	#ifndef __GNUC__
+		#define FORCEINLINE __forceinline
+		#define NORETURN_PRE __declspec(noreturn)
+	#endif
+	#define PLUGIN_EXPORT __declspec(dllexport)
+
+	#if _WIN32_WCE < 300
+	#define SMALL_SCREEN_DEVICE
+	#endif
+
+#elif defined(_MSC_VER)
+
+	#define scumm_stricmp stricmp
+	#define scumm_strnicmp _strnicmp
+	#define snprintf _snprintf
+
+	#define SCUMM_LITTLE_ENDIAN
+
+	#define FORCEINLINE __forceinline
+	#define NORETURN_PRE __declspec(noreturn)
+	#define PLUGIN_EXPORT __declspec(dllexport)
+
+
 #elif defined(__MINGW32__)
 
 	#define scumm_stricmp stricmp
@@ -73,53 +212,236 @@
 
 	#define SCUMM_LITTLE_ENDIAN
 
+	#define PLUGIN_EXPORT __declspec(dllexport)
+
 #elif defined(UNIX)
-	// For strcasecmp and strncasecmp
-	#include <strings.h>
 
 	#define scumm_stricmp strcasecmp
 	#define scumm_strnicmp strncasecmp
 
-	#if defined(__DECCXX) /* Assume alpha architecture */
+	#ifndef CONFIG_H
+		/* need this for the SDL_BYTEORDER define */
+		#include <SDL_byteorder.h>
+
+		#if SDL_BYTEORDER == SDL_LIL_ENDIAN
+		#define SCUMM_LITTLE_ENDIAN
+		#elif SDL_BYTEORDER == SDL_BIG_ENDIAN
+		#define SCUMM_BIG_ENDIAN
+		#else
+		#error Neither SDL_BIG_ENDIAN nor SDL_LIL_ENDIAN is set.
+		#endif
+	#endif
+
+	// You need to set this manually if necessary
+//	#define SCUMM_NEED_ALIGNMENT
+
+	#if defined(__DECCXX) // Assume alpha architecture
 	#define INVERSE_MKID
 	#define SCUMM_NEED_ALIGNMENT
 	#endif
 
+#elif defined(__PALMOS_TRAPS__)	|| defined (__PALMOS_ARMLET__)
+
+#ifdef __PALMOS_ARMLET__
+	#include <extras_string.h>
+#endif
+	#define SCUMM_LITTLE_ENDIAN
+
+	#define scumm_stricmp stricmp
+	#define scumm_strnicmp strnicmp
+
+	#define SCUMM_NEED_ALIGNMENT
+	#define STRINGBUFLEN 256
+
+	extern const char *SCUMMVM_SAVEPATH;
+
+	#if !defined(COMPILE_ZODIAC) && !defined(COMPILE_OS5)
+	#	define NEWGUI_256
+	#else
+	#	undef UNUSED
+	#endif
+
+#elif defined(__DC__)
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define SCUMM_LITTLE_ENDIAN
+	#define SCUMM_NEED_ALIGNMENT
+
+#elif defined(__GP32__)
+
+	#define scumm_stricmp stricmp
+	#define scumm_strnicmp strnicmp
+
+	#define SCUMM_LITTLE_ENDIAN
+	#define SCUMM_NEED_ALIGNMENT
+
+	// Override typenames. uint is already defined by system header files.
+	#define SCUMMVM_DONT_DEFINE_TYPES
+	typedef unsigned char byte;
+
+	typedef unsigned char uint8;
+	typedef signed char int8;
+
+	typedef unsigned short int uint16;
+	typedef signed short int int16;
+
+	typedef unsigned long int uint32;
+	typedef signed long int int32;
+
+#elif defined(__PLAYSTATION2__)
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define SCUMM_LITTLE_ENDIAN
+	#define SCUMM_NEED_ALIGNMENT
+
+#elif defined(__N64__)
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define SCUMM_BIG_ENDIAN
+	#define SCUMM_NEED_ALIGNMENT
+
+	#define STRINGBUFLEN 256
+
+	#define SCUMMVM_DONT_DEFINE_TYPES
+	typedef unsigned char byte;
+
+	typedef unsigned char uint8;
+	typedef signed char int8;
+
+	typedef unsigned short int uint16;
+	typedef signed short int int16;
+
+	typedef unsigned int uint32;
+	typedef signed int int32;
+
+	typedef unsigned long long uint64;
+	typedef signed long long int64;
+
+#elif defined(__PSP__)
+
+	#include <malloc.h>
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define	SCUMM_LITTLE_ENDIAN
+	#define	SCUMM_NEED_ALIGNMENT
+
+#elif defined(__amigaos4__)
+
+	#define	scumm_stricmp strcasecmp
+	#define	scumm_strnicmp strncasecmp
+
+	#define	SCUMM_BIG_ENDIAN
+	#define	SCUMM_NEED_ALIGNMENT
+
+#elif defined (__DS__)
+
+	#define scumm_stricmp stricmp
+	#define scumm_strnicmp strnicmp
+
+	#define SCUMM_NEED_ALIGNMENT
+	#define SCUMM_LITTLE_ENDIAN
+
+	#define SCUMMVM_DONT_DEFINE_TYPES
+
+	#define STRINGBUFLEN 256
+//	#define printf(fmt, ...)					consolePrintf(fmt, ##__VA_ARGS__)
+
+#elif defined(__WII__)
+
+	#define scumm_stricmp strcasecmp
+	#define scumm_strnicmp strncasecmp
+
+	#define	SCUMM_BIG_ENDIAN
+	#define	SCUMM_NEED_ALIGNMENT
+
 #else
-
 	#error No system type defined
 
 #endif
 
 
-/*
- * GCC specific stuff
- */
+//
+// GCC specific stuff
+//
 #if defined(__GNUC__)
-	#define GCC_PACK __attribute__((packed))
-	#define GCC_PRINTF(x,y) __attribute__((format(printf, x, y)))
+	#define NORETURN_POST __attribute__((__noreturn__))
+	#define PACKED_STRUCT __attribute__((__packed__))
+	#define GCC_PRINTF(x,y) __attribute__((__format__(printf, x, y)))
+
+	#if !defined(FORCEINLINE) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+		#define FORCEINLINE inline __attribute__((__always_inline__))
+	#endif
 #else
-	#define GCC_PACK
+	#define PACKED_STRUCT
 	#define GCC_PRINTF(x,y)
 #endif
 
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(x) ((int)(sizeof(x) / sizeof(x[0])))
-#endif
 
+//
+// Fallbacks / default values for various special macros
+//
 #ifndef FORCEINLINE
-#define FORCEINLINE static inline
+#define FORCEINLINE inline
 #endif
 
-#if defined(__GNUC__)
-#define NORETURN_PRE
-#define NORETURN_POST	__attribute__((__noreturn__))
-#elif defined(_MSC_VER)
-#define NORETURN_PRE	_declspec(noreturn)
-#define NORETURN_POST
+#ifndef PLUGIN_EXPORT
+#define PLUGIN_EXPORT
+#endif
+
+#ifndef NORETURN_PRE
+#define	NORETURN_PRE
+#endif
+
+#ifndef NORETURN_POST
+#define	NORETURN_POST
+#endif
+
+#ifndef STRINGBUFLEN
+#define STRINGBUFLEN 1024
+#endif
+
+#ifndef PI
+#define PI 3.14159265358979323846
+#endif
+
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 256
+#endif
+
+
+//
+// Typedef our system types unless SCUMMVM_DONT_DEFINE_TYPES is set.
+//
+#ifndef SCUMMVM_DONT_DEFINE_TYPES
+	typedef unsigned char byte;
+	typedef unsigned char uint8;
+	typedef signed char int8;
+	typedef unsigned short uint16;
+	typedef signed short int16;
+	typedef unsigned int uint32;
+	typedef signed int int32;
+	typedef unsigned int uint;
+#endif
+
+
+
+//
+// Overlay color type (FIXME: shouldn't be declared here)
+//
+#if defined(NEWGUI_256)
+	// 256 color only on PalmOS
+	typedef byte OverlayColor;
 #else
-#define NORETURN_PRE
-#define NORETURN_POST
+	// 15/16 bit color mode everywhere else...
+	typedef uint16 OverlayColor;
 #endif
 
 

Modified: tools/trunk/common/util.h
===================================================================
--- tools/trunk/common/util.h	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/common/util.h	2010-04-01 19:16:26 UTC (rev 48459)
@@ -25,9 +25,6 @@
 
 #include "common/scummsys.h"
 
-namespace Common {
-
-
 #ifdef MIN
 #undef MIN
 #endif
@@ -42,7 +39,21 @@
 template<typename T> inline T CLIP (T v, T amin, T amax)
 		{ if (v < amin) return amin; else if (v > amax) return amax; else return v; }
 
+
 /**
+ * Template method which swaps the vaulues of its two parameters.
+ */
+template<typename T> inline void SWAP(T &a, T &b) { T tmp = a; a = b; b = tmp; }
+
+/**
+ * Macro which determines the number of entries in a fixed size array.
+ */
+#define ARRAYSIZE(x) ((int)(sizeof(x) / sizeof(x[0])))
+
+namespace Common {
+
+
+/**
  * List of game language.
  */
 enum Language {

Modified: tools/trunk/engines/kyra/kyra_ins.cpp
===================================================================
--- tools/trunk/engines/kyra/kyra_ins.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/kyra/kyra_ins.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -446,11 +446,6 @@
 	return newIndex;
 }
 
-template<class T>
-T MIN(T l, T r) {
-	return (l < r) ? l : r;
-}
-
 HoFInstaller::HoFInstaller(const char *baseFilename) : _list(0), _files(0) {
 	strncpy(_baseFilename, baseFilename, sizeof(_baseFilename));
 	char *str = strstr(_baseFilename, ".");

Modified: tools/trunk/engines/mohawk/construct_mohawk.cpp
===================================================================
--- tools/trunk/engines/mohawk/construct_mohawk.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/mohawk/construct_mohawk.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -276,7 +276,7 @@
 	//return *test > *ref;
 
 	// Function with correction for underscore ordered after Alphanumerics...
-	for (uint16 i = 0; i < Common::MIN(test->size(), ref->size()); i++) {
+	for (uint16 i = 0; i < MIN(test->size(), ref->size()); i++) {
 		if ((*test)[i] == '_' && (*ref)[i] != '_')
 			return true;
 		else if ((*test)[i] > (*ref)[i])

Modified: tools/trunk/engines/queen/compress_queen.cpp
===================================================================
--- tools/trunk/engines/queen/compress_queen.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/queen/compress_queen.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -22,8 +22,8 @@
 
 #include <string.h>
 
+#include "common/util.h"
 #include "compress.h"
-
 #include "compress_queen.h"
 
 const uint32 QTBL = 'QTBL';

Modified: tools/trunk/engines/scumm/compress_scumm_bun.cpp
===================================================================
--- tools/trunk/engines/scumm/compress_scumm_bun.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/scumm/compress_scumm_bun.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -25,8 +25,9 @@
 #include <string.h>
 #include <stdio.h>
 
+#include "common/util.h"
+#include "common/endian.h"
 #include "compress_scumm_bun.h"
-#include "common/endian.h"
 
 /*
  * The "IMC" codec below (see cases 13 & 15 in decompressCodec) is actually a

Modified: tools/trunk/engines/scumm/extract_mm_nes.cpp
===================================================================
--- tools/trunk/engines/scumm/extract_mm_nes.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/scumm/extract_mm_nes.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -1191,7 +1191,7 @@
 	uint16	script_addr[200];
 	uint8	sound_lfl[100];
 	uint16	sound_addr[100];
-} GCC_PACK mm_lfl_index;
+} PACKED_STRUCT mm_lfl_index;
 
 #include "common/pack-end.h"	/* END STRUCT PACKING */
 

Modified: tools/trunk/engines/tucker/compress_tucker.cpp
===================================================================
--- tools/trunk/engines/tucker/compress_tucker.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/engines/tucker/compress_tucker.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -24,8 +24,8 @@
 #include <string.h>
 #include <stdio.h>
 
+#include "common/util.h"
 #include "compress.h"
-
 #include "compress_tucker.h"
 
 #define CURRENT_VER  1

Modified: tools/trunk/sound/adpcm.cpp
===================================================================
--- tools/trunk/sound/adpcm.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/sound/adpcm.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -206,11 +206,11 @@
 	while (samples < numSamples && !_stream->eos() && _stream->pos() < (int)_endpos) {
 		if (_blockPos == _blockAlign) {
 			// read block header
-			_status.ch[0].predictor = Common::CLIP(_stream->readByte(), (byte)0, (byte)6);
+			_status.ch[0].predictor = CLIP(_stream->readByte(), (byte)0, (byte)6);
 			_status.ch[0].coeff1 = MSADPCMAdaptCoeff1[_status.ch[0].predictor];
 			_status.ch[0].coeff2 = MSADPCMAdaptCoeff2[_status.ch[0].predictor];
 			if (stereo) {
-				_status.ch[1].predictor = Common::CLIP(_stream->readByte(), (byte)0, (byte)6);
+				_status.ch[1].predictor = CLIP(_stream->readByte(), (byte)0, (byte)6);
 				_status.ch[1].coeff1 = MSADPCMAdaptCoeff1[_status.ch[1].predictor];
 				_status.ch[1].coeff2 = MSADPCMAdaptCoeff2[_status.ch[1].predictor];
 			}

Modified: tools/trunk/sound/audiostream.cpp
===================================================================
--- tools/trunk/sound/audiostream.cpp	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/sound/audiostream.cpp	2010-04-01 19:16:26 UTC (rev 48459)
@@ -104,7 +104,7 @@
 int LinearMemoryStream<stereo, is16Bit, isUnsigned, isLE>::readBuffer(int16 *buffer, const int numSamples) {
 	int samples = 0;
 	while (samples < numSamples && !eosIntern()) {
-		const int len = Common::MIN(numSamples, samples + (int)(_end - _ptr) / (is16Bit ? 2 : 1));
+		const int len = MIN(numSamples, samples + (int)(_end - _ptr) / (is16Bit ? 2 : 1));
 		while (samples < len) {
 			*buffer++ = READ_ENDIAN_SAMPLE(is16Bit, isUnsigned, _ptr, isLE);
 			_ptr += (is16Bit ? 2 : 1);

Modified: tools/trunk/sound/voc.h
===================================================================
--- tools/trunk/sound/voc.h	2010-04-01 16:11:29 UTC (rev 48458)
+++ tools/trunk/sound/voc.h	2010-04-01 19:16:26 UTC (rev 48459)
@@ -40,14 +40,14 @@
 	uint16 datablock_offset;
 	uint16 version;
 	uint16 id;
-} GCC_PACK;
+} PACKED_STRUCT;
 
 struct VocBlockHeader {
 	uint8 blocktype;
 	uint8 size[3];
 	uint8 sr;
 	uint8 pack;
-} GCC_PACK;
+} PACKED_STRUCT;
 
 #include "common/pack-end.h"	/* END STRUCT PACKING */
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list