aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudvig Strigeus2001-11-14 19:33:10 +0000
committerLudvig Strigeus2001-11-14 19:33:10 +0000
commit8ae567b094b798625ffc9e4870086d8faf19c542 (patch)
treea7edb08a9cbc7a48f0401f0b3403f1210b23f9f1
parentb8d259d60eed2f8edc321dcba6116bddabbc35e8 (diff)
downloadscummvm-rg350-8ae567b094b798625ffc9e4870086d8faf19c542.tar.gz
scummvm-rg350-8ae567b094b798625ffc9e4870086d8faf19c542.tar.bz2
scummvm-rg350-8ae567b094b798625ffc9e4870086d8faf19c542.zip
gcc patch by lionel ulmer
svn-id: r3492
-rw-r--r--scumm.h17
-rw-r--r--scummsys.h15
-rw-r--r--sound.cpp4
3 files changed, 22 insertions, 14 deletions
diff --git a/scumm.h b/scumm.h
index 3082253360..ce43fcfa58 100644
--- a/scumm.h
+++ b/scumm.h
@@ -37,12 +37,13 @@ enum {
NUM_ACTORS = 13
};
-#pragma START_PACK_STRUCTS
-
struct Point {
int x,y;
};
+
+#pragma START_PACK_STRUCTS
+
#define SIZEOF_BOX 20
struct Box { /* file format */
int16 ulx,uly;
@@ -52,23 +53,23 @@ struct Box { /* file format */
byte mask;
byte flags;
uint16 scale;
-};
+} GCC_PACK;
struct ResHeader {
uint32 size;
-};
+} GCC_PACK;
struct RoomHeader {
uint32 tag, size;
uint16 width,height;
uint16 numObjects;
-};
+} GCC_PACK;
struct BompHeader {
uint32 tag,size;
uint16 unk;
uint16 width,height;
-};
+} GCC_PACK;
struct CodeHeader {
uint32 id;
@@ -94,7 +95,7 @@ struct CodeHeader {
byte actordir;
} v6;
};
-};
+} GCC_PACK;
struct ImageHeader { /* file format */
uint32 id;
@@ -107,7 +108,7 @@ struct ImageHeader { /* file format */
struct {
int16 x,y;
} hotspot[15];
-};
+} GCC_PACK;
#pragma END_PACK_STRUCTS
diff --git a/scummsys.h b/scummsys.h
index 4246b10876..7e2fb4e453 100644
--- a/scummsys.h
+++ b/scummsys.h
@@ -49,6 +49,7 @@ typedef signed long int32;
#define START_PACK_STRUCTS pack (push,1)
#define END_PACK_STRUCTS pack(pop)
+#define GCC_PACK
#elif defined(__CYGWIN__)
@@ -91,11 +92,6 @@ typedef signed long int32;
#endif
#define FORCEINLINE inline
-
-#if defined(__GNUC__)
-#define NORETURN __attribute__((__noreturn__))
-#else
-#endif
#define CDECL
typedef unsigned char byte;
@@ -107,8 +103,17 @@ typedef signed char int8;
typedef signed short int16;
typedef signed long int32;
+#if defined(__GNUC__)
+#define START_PACK_STRUCTS
+#define END_PACK_STRUCTS
+#define GCC_PACK __attribute__((packed))
+#define NORETURN __attribute__((__noreturn__))
+#else
#define START_PACK_STRUCTS pack (1)
#define END_PACK_STRUCTS pack ()
+#define GCC_PACK
+#define NORETURN
+#endif
#else
#error No system type defined
diff --git a/sound.cpp b/sound.cpp
index 1590e1ff42..4c2cf92564 100644
--- a/sound.cpp
+++ b/sound.cpp
@@ -305,10 +305,12 @@ void Scumm::pauseSounds(bool pause) {
_soundsPaused = pause;
}
+#pragma START_PACK_STRUCTS
struct VOCHeader {
byte id[19];
byte extra[7];
-};
+} GCC_PACK;
+#pragma END_PACK_STRUCTS
static const char VALID_VOC_ID[] = "Creative Voice File";