[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