390 lines
9.5 KiB
C
390 lines
9.5 KiB
C
// __RAD16__ means 16 bit code (Win16)
|
|
// __RAD32__ means 32 bit code (DOS, Win386, Win32s, Mac)
|
|
|
|
// __RADDOS__ means DOS code (16 or 32 bit)
|
|
// __RADWIN__ means Windows code (Win16, Win386, Win32s)
|
|
// __RADWINEXT__ means Windows 386 extender (Win386)
|
|
// __RADNT__ means Win32s code
|
|
// __RADMAC__ means Macintosh
|
|
// __RADCARBON__ means Carbon
|
|
// __RADMACH__ means MachO
|
|
// __RADXBOX__ means the XBox console
|
|
// __RADNGC__ means the Nintendo GameCube
|
|
// __RADNTBUILDLINUX__ means building Linux on NT
|
|
// __RADLINUX__ means actually building on Linux (most likely with GCC)
|
|
|
|
// __RADX86__ means Intel x86
|
|
// __RADMMX__ means Intel x86 MMX instructions are allowed
|
|
// __RAD68K__ means 68K
|
|
// __RADPPC__ means PowerPC
|
|
|
|
// __RADLITTLEENDIAN__ means processor is little-endian (x86)
|
|
// __RADBIGENDIAN__ means processor is big-endian (680x0, PPC)
|
|
|
|
#ifndef __RADBASEH__
|
|
#define __RADBASEH__
|
|
|
|
#define RADCOPYRIGHT "Copyright (C) 1994-2003, RAD Game Tools, Inc."
|
|
|
|
#ifndef __RADRES__
|
|
|
|
#if defined(GEKKO)
|
|
|
|
#define __RADNGC__
|
|
#define __RAD32__
|
|
#define __RADPPC__
|
|
#define __RADBIGENDIAN__
|
|
#define RADINLINE inline
|
|
|
|
#elif (defined(__MWERKS__) && !defined(__INTEL__)) || defined(__MRC__) || defined(THINK_C) || defined(powerc) || defined(macintosh) || defined(__powerc) || defined(__APPLE__) || defined(__MACH__)
|
|
#define __RADMAC__
|
|
#if defined(powerc) || defined(__powerc) || defined(__ppc__)
|
|
#define __RADPPC__
|
|
#else
|
|
#define __RAD68K__
|
|
#endif
|
|
|
|
#define __RAD32__
|
|
#define __RADBIGENDIAN__
|
|
|
|
#if defined(__MWERKS__)
|
|
#if (defined(__cplusplus) || ! __option(only_std_keywords))
|
|
#define RADINLINE inline
|
|
#endif
|
|
#elif defined(__MRC__)
|
|
#if defined(__cplusplus)
|
|
#define RADINLINE inline
|
|
#endif
|
|
#elif defined(__GNUC__) || defined(__GNUG__)
|
|
#define RADINLINE inline
|
|
#define __RADMACH__
|
|
#endif
|
|
|
|
#ifdef __MACH__
|
|
#define __RADMACH__
|
|
#endif
|
|
|
|
#ifdef TARGET_API_MAC_CARBON
|
|
#if TARGET_API_MAC_CARBON
|
|
#ifndef __RADCARBON__
|
|
#define __RADCARBON__
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#elif defined(linux)
|
|
|
|
#define __RADLINUX__
|
|
#define __RADX86__
|
|
#define __RADMMX__
|
|
#define __RAD32__
|
|
#define __RADLITTLEENDIAN__
|
|
#define RADINLINE inline
|
|
|
|
#else
|
|
|
|
#define __RADX86__
|
|
#define __RADMMX__
|
|
|
|
#ifdef __MWERKS__
|
|
#define _WIN32
|
|
#endif
|
|
|
|
#ifdef __DOS__
|
|
#define __RADDOS__
|
|
#endif
|
|
|
|
#ifdef __386__
|
|
#define __RAD32__
|
|
#endif
|
|
|
|
#ifdef _Windows //For Borland
|
|
#ifdef __WIN32__
|
|
#define WIN32
|
|
#else
|
|
#define __WINDOWS__
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _WINDOWS //For MS
|
|
#ifndef _WIN32
|
|
#define __WINDOWS__
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#ifdef _XBOX
|
|
#define __RADXBOX__
|
|
#else
|
|
#define __RADNT__
|
|
#endif
|
|
#define __RADWIN__
|
|
#define __RAD32__
|
|
#else
|
|
#ifdef __NT__
|
|
#ifdef _XBOX
|
|
#define __RADXBOX__
|
|
#else
|
|
#define __RADNT__
|
|
#endif
|
|
#define __RADWIN__
|
|
#define __RAD32__
|
|
#else
|
|
#ifdef __WINDOWS_386__
|
|
#define __RADWIN__
|
|
#define __RADWINEXT__
|
|
#define __RAD32__
|
|
#else
|
|
#ifdef __WINDOWS__
|
|
#define __RADWIN__
|
|
#define __RAD16__
|
|
#else
|
|
#ifdef WIN32
|
|
#ifdef _XBOX
|
|
#define __RADXBOX__
|
|
#else
|
|
#define __RADNT__
|
|
#endif
|
|
#define __RADWIN__
|
|
#define __RAD32__
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#define __RADLITTLEENDIAN__
|
|
#ifdef __WATCOMC__
|
|
#define RADINLINE
|
|
#else
|
|
#define RADINLINE __inline
|
|
#endif
|
|
#endif
|
|
|
|
#if (!defined(__RADDOS__) && !defined(__RADWIN__) && !defined(__RADMAC__) && !defined(__RADNGC__) && !defined(__RADXBOX__) && !defined(__RADLINUX__))
|
|
#error "RAD.H did not detect your platform. Define __DOS__, __WINDOWS__, WIN32, macintosh, or powerc."
|
|
#endif
|
|
|
|
#ifdef __RADFINAL__
|
|
#define RADTODO(str) { char __str[0]=str; }
|
|
#else
|
|
#define RADTODO(str)
|
|
#endif
|
|
|
|
#ifdef __RADNGC__
|
|
|
|
#define RADLINK
|
|
#define RADEXPLINK
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#define RADASMLINK
|
|
#define PTR4
|
|
|
|
#elif defined(__RADLINUX__)
|
|
|
|
#define RADLINK __attribute__((cdecl))
|
|
#define RADEXPLINK __attribute__((cdecl))
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#define RADASMLINK
|
|
#define PTR4
|
|
|
|
#elif defined(__RADMAC__)
|
|
|
|
// this define is for CodeWarrior 11's stupid new libs (even though
|
|
// we don't use longlong's).
|
|
|
|
#define __MSL_LONGLONG_SUPPORT__
|
|
|
|
#define RADLINK
|
|
#define RADEXPLINK
|
|
|
|
#ifdef __CFM68K__
|
|
#ifdef __RADINDLL__
|
|
#define RADEXPFUNC RADDEFFUNC __declspec(export)
|
|
#else
|
|
#define RADEXPFUNC RADDEFFUNC __declspec(import)
|
|
#endif
|
|
#else
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#endif
|
|
#define RADASMLINK
|
|
|
|
#else
|
|
|
|
#ifdef __RADNT__
|
|
#ifndef _WIN32
|
|
#define _WIN32
|
|
#endif
|
|
#ifndef WIN32
|
|
#define WIN32
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __RADWIN__
|
|
#ifdef __RAD32__
|
|
#ifdef __RADXBOX__
|
|
|
|
#define RADLINK __stdcall
|
|
#define RADEXPLINK __stdcall
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
|
|
#elif defined(__RADNTBUILDLINUX__)
|
|
|
|
#define RADLINK __cdecl
|
|
#define RADEXPLINK __cdecl
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
|
|
#else
|
|
#ifdef __RADNT__
|
|
|
|
#define RADLINK __stdcall
|
|
#define RADEXPLINK __stdcall
|
|
|
|
#ifdef __RADINEXE__
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#else
|
|
#ifndef __RADINDLL__
|
|
#define RADEXPFUNC RADDEFFUNC __declspec(dllimport)
|
|
#ifdef __BORLANDC__
|
|
#if __BORLANDC__<=0x460
|
|
#undef RADEXPFUNC
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#endif
|
|
#endif
|
|
#else
|
|
#define RADEXPFUNC RADDEFFUNC __declspec(dllexport)
|
|
#endif
|
|
#endif
|
|
#else
|
|
#define RADLINK __pascal
|
|
#define RADEXPLINK __far __pascal
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#endif
|
|
#endif
|
|
#else
|
|
#define RADLINK __pascal
|
|
#define RADEXPLINK __far __pascal __export
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#endif
|
|
#else
|
|
#define RADLINK __pascal
|
|
#define RADEXPLINK __pascal
|
|
#define RADEXPFUNC RADDEFFUNC
|
|
#endif
|
|
|
|
#define RADASMLINK __cdecl
|
|
|
|
#endif
|
|
|
|
#ifndef __RADXBOX__
|
|
#ifdef __RADWIN__
|
|
#ifndef _WINDOWS
|
|
#define _WINDOWS
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef RADDEFFUNC
|
|
|
|
#ifdef __cplusplus
|
|
#define RADDEFFUNC extern "C"
|
|
#define RADDEFSTART extern "C" {
|
|
#define RADDEFEND }
|
|
#define RADDEFINEDATA extern "C"
|
|
#define RADDECLAREDATA extern "C"
|
|
#define RADDEFAULT( val ) =val
|
|
#else
|
|
#define RADDEFFUNC
|
|
#define RADDEFSTART
|
|
#define RADDEFEND
|
|
#define RADDEFINEDATA
|
|
#define RADDECLAREDATA extern
|
|
#define RADDEFAULT( val )
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef __RADNGC__
|
|
#define RAD_ATTRIBUTE_ALIGN(num) __attribute__ ((aligned (num)))
|
|
#else
|
|
#ifdef __RADX86__
|
|
#ifdef __WATCOMC__
|
|
#define RAD_ATTRIBUTE_ALIGN(num)
|
|
#else
|
|
#define RAD_ATTRIBUTE_ALIGN(num) __declspec(align(num))
|
|
#endif
|
|
#else
|
|
#define RAD_ATTRIBUTE_ALIGN(num)
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __RADX86__
|
|
#ifdef __WATCOMC__
|
|
#define RAD_ALIGN_TYPE double
|
|
#define RAD_ALIGN_DEF 0.0
|
|
#else
|
|
#define RAD_ALIGN_TYPE double __declspec(align(8))
|
|
#define RAD_ALIGN_DEF 0.0
|
|
#endif
|
|
#else
|
|
#define RAD_ALIGN_TYPE double
|
|
#define RAD_ALIGN_DEF 0.0
|
|
#endif
|
|
|
|
#define RAD_ALIGN_ADD_TYPE(var) RAD_ALIGN_TYPE var##align = RAD_ALIGN_DEF
|
|
|
|
#define S8 signed char
|
|
#define U8 unsigned char
|
|
#define U32 unsigned long
|
|
#define S32 signed long
|
|
#define F32 float
|
|
#define F64 double
|
|
|
|
#if defined(__MWERKS__) || defined(__MRC__) || defined( GEKKO )
|
|
#define U64 unsigned long long
|
|
#define S64 signed long long
|
|
#else
|
|
#define U64 unsigned __int64
|
|
#define S64 signed __int64
|
|
#endif
|
|
|
|
#ifdef __RAD32__
|
|
#define PTR4
|
|
#define U16 unsigned short
|
|
#define S16 signed short
|
|
#else
|
|
#define PTR4 __far
|
|
#define U16 unsigned int
|
|
#define S16 signed int
|
|
#endif
|
|
|
|
#ifndef RAD_NO_LOWERCASE_TYPES
|
|
|
|
#ifdef __RADNGC__
|
|
|
|
// Unfortunately dolphin\types.h typedefs the
|
|
// same types that we use.
|
|
// So we use the typedefs for this platform.
|
|
|
|
#include <dolphin\types.h>
|
|
|
|
#else
|
|
|
|
#define u8 U8
|
|
#define s8 S8
|
|
#define u16 U16
|
|
#define s16 S16
|
|
#define u32 U32
|
|
#define s32 S32
|
|
#define u64 U64
|
|
#define s64 S64
|
|
#define f32 F32
|
|
#define f64 F64
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|