aboutsummaryrefslogtreecommitdiff
path: root/common/scummsys.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/scummsys.h')
-rw-r--r--common/scummsys.h223
1 files changed, 99 insertions, 124 deletions
diff --git a/common/scummsys.h b/common/scummsys.h
index e63be6e31a..f250c1e830 100644
--- a/common/scummsys.h
+++ b/common/scummsys.h
@@ -40,47 +40,61 @@
#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_USE_LONG_INT
+// - Define this if your port needs to use 'long' for the int32 datatype
+// (i.e. an integer with exactly 32 bits).
+// SMALL_SCREEN_DEVICE
+// - ...
+// ...
+
#if defined(_MSC_VER) && !defined(__SYMBIAN32__)
#define scumm_stricmp stricmp
#define scumm_strnicmp _strnicmp
#define snprintf _snprintf
+ #define SCUMM_LITTLE_ENDIAN
+
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
+
+ #define START_PACK_STRUCTS pack(push, 1)
+ #define END_PACK_STRUCTS pack(pop)
+
#if defined(CHECK_HEAP)
#undef CHECK_HEAP
#define CHECK_HEAP checkHeap();
#endif
- #define SCUMM_LITTLE_ENDIAN
-
#define FORCEINLINE __forceinline
#define NORETURN _declspec(noreturn)
#define PLUGIN_EXPORT __declspec(dllexport)
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned long uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed long int32;
-
- typedef int8 int8_t;
- typedef int16 int16_t;
- typedef int32 int32_t;
- typedef uint8 uint8_t;
- typedef uint16 uint16_t;
- typedef uint32 uint32_t;
-
- #define START_PACK_STRUCTS pack(push, 1)
- #define END_PACK_STRUCTS pack(pop)
-
#if defined(_WIN32_WCE) && _WIN32_WCE < 300
#define CDECL __cdecl
#define SMALL_SCREEN_DEVICE
#endif
+ typedef signed char int8_t;
+ typedef signed short int16_t;
+ typedef signed long int32_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned long uint32_t;
+
#elif defined(__MINGW32__)
#define scumm_stricmp stricmp
@@ -88,24 +102,15 @@
#define SCUMM_LITTLE_ENDIAN
- #ifndef _HEAPOK
- #define _HEAPOK (-2)
- #endif
-
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned int uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed int int32;
-
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
#define PLUGIN_EXPORT __declspec(dllexport)
+ #ifndef _HEAPOK
+ #define _HEAPOK (-2)
+ #endif
+
#elif defined(UNIX)
#define scumm_stricmp strcasecmp
@@ -134,17 +139,6 @@
// You need to set this manually if necessary
// #define SCUMM_NEED_ALIGNMENT
- #ifndef HAVE_CONFIG_H
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned int uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed int int32;
- #endif
-
#if defined(__DECCXX) // Assume alpha architecture
#define INVERSE_MKID
#define SCUMM_NEED_ALIGNMENT
@@ -157,12 +151,6 @@
#elif defined(__PALMOS_TRAPS__) || defined (__PALMOS_ARMLET__)
- #include "palmversion.h"
- #include "globals.h"
- #include "extend.h"
-
- #define STRINGBUFLEN 256
-
#define scumm_stricmp stricmp
#define scumm_strnicmp strnicmp
@@ -174,18 +162,20 @@
#define SCUMM_NEED_ALIGNMENT
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned long uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed long int32;
-
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
+
#define START_PACK_STRUCTS pack (1)
#define END_PACK_STRUCTS pack ()
+ #include "palmversion.h"
+ #include "globals.h"
+ #include "extend.h"
+
+ #define STRINGBUFLEN 256
+
#if !defined(COMPILE_ZODIAC) && !defined(COMPILE_OS5)
#define NEWGUI_256
#else
@@ -200,19 +190,16 @@
#define SCUMM_BIG_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned long uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed long int32;
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
#if !defined(__GNUC__)
#define START_PACK_STRUCTS pack (1)
#define END_PACK_STRUCTS pack ()
#endif
+
#define main morphos_main
#elif defined(__DC__)
@@ -223,14 +210,10 @@
#define SCUMM_LITTLE_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned long uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed long int32;
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
@@ -243,16 +226,10 @@
#define SCUMM_LITTLE_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- #define _HEAPOK 0
-
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned long uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed long int32;
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
@@ -265,15 +242,6 @@
#define SCUMM_LITTLE_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned int uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed int int32;
-
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
@@ -302,32 +270,22 @@
#define SCUMM_LITTLE_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short uint16;
- typedef unsigned int uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int16;
- typedef signed int int32;
-
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
#elif defined(__amigaos4__)
- #include <exec/types.h>
-
#define scumm_stricmp strcasecmp
#define scumm_strnicmp strncasecmp
#define SCUMM_BIG_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- #ifndef HAVE_CONFIG_H
- typedef unsigned char byte;
- typedef unsigned int uint;
- #endif
+ // FIXME: Why is this here? If it does declare types int8 etc., and they
+ // are not compatible with our typedefs below, we need a proper fix.
+ // In general, though, you should avoid port specific includes in this
+ // header file, if possible.
+ #include <exec/types.h>
#elif defined(__SYMBIAN32__)
@@ -337,24 +295,16 @@
#define SCUMM_LITTLE_ENDIAN
#define SCUMM_NEED_ALIGNMENT
- #define CDECL
- #define CHECK_HEAP
- #define SMALL_SCREEN_DEVICE
- #define FORCEINLINE inline
- #define _HEAPOK 0
-
- typedef unsigned char byte;
- typedef unsigned char uint8;
- typedef unsigned short int uint16;
- typedef unsigned long int uint32;
- typedef unsigned int uint;
- typedef signed char int8;
- typedef signed short int int16;
- typedef signed long int int32;
+ // FIXME: Do you really need to use 'long' on this port? Please replace
+ // this comment with a new comment that states so, and ideally also
+ // explains the reasons briefly.
+ #define SCUMMVM_USE_LONG_INT
#define START_PACK_STRUCTS pack(push, 1)
#define END_PACK_STRUCTS pack(pop)
+ #define SMALL_SCREEN_DEVICE
+
#else
#error No system type defined
@@ -413,6 +363,31 @@
//
+// Typedef our system types unless they were already set by config.h
+//
+#ifndef HAVE_CONFIG_H
+ typedef unsigned char byte;
+
+ typedef unsigned char uint8;
+ typedef signed char int8;
+
+ typedef unsigned short uint16;
+ typedef signed short int16;
+
+ #ifdef SCUMMVM_USE_LONG_INT
+ typedef unsigned long uint32;
+ typedef signed long int32;
+ typedef unsigned long uint;
+ #else
+ typedef unsigned int uint32;
+ typedef signed int int32;
+ typedef unsigned int uint;
+ #endif
+#endif
+
+
+
+//
// Overlay color type (FIXME: shouldn't be declared here)
//
#if defined(NEWGUI_256)