diff options
author | Toad King | 2012-06-14 03:21:06 -0400 |
---|---|---|
committer | Toad King | 2012-06-14 03:21:06 -0400 |
commit | 6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119 (patch) | |
tree | 885cf7f507139b795ba7b2a6fb829dc044da39dd /src/port.h | |
download | snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.gz snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.bz2 snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.zip |
initial pocketsnes commit
Diffstat (limited to 'src/port.h')
-rw-r--r-- | src/port.h | 503 |
1 files changed, 503 insertions, 0 deletions
diff --git a/src/port.h b/src/port.h new file mode 100644 index 0000000..96a3ac1 --- /dev/null +++ b/src/port.h @@ -0,0 +1,503 @@ +/* + * Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. + * + * (c) Copyright 1996 - 2001 Gary Henderson (gary.henderson@ntlworld.com) and + * Jerremy Koot (jkoot@snes9x.com) + * + * Super FX C emulator code + * (c) Copyright 1997 - 1999 Ivar (ivar@snes9x.com) and + * Gary Henderson. + * Super FX assembler emulator code (c) Copyright 1998 zsKnight and _Demo_. + * + * DSP1 emulator code (c) Copyright 1998 Ivar, _Demo_ and Gary Henderson. + * C4 asm and some C emulation code (c) Copyright 2000 zsKnight and _Demo_. + * C4 C code (c) Copyright 2001 Gary Henderson (gary.henderson@ntlworld.com). + * + * DOS port code contains the works of other authors. See headers in + * individual files. + * + * Snes9x homepage: http://www.snes9x.com + * + * Permission to use, copy, modify and distribute Snes9x in both binary and + * source form, for non-commercial purposes, is hereby granted without fee, + * providing that this license information and copyright notice appear with + * all copies and any derived work. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event shall the authors be held liable for any damages + * arising from the use of this software. + * + * Snes9x is freeware for PERSONAL USE only. Commercial users should + * seek permission of the copyright holders first. Commercial use includes + * charging money for Snes9x or software derived from Snes9x. + * + * The copyright holders request that bug fixes and improvements to the code + * should be forwarded to them so everyone can benefit from the modifications + * in future versions. + * + * Super NES and Super Nintendo Entertainment System are trademarks of + * Nintendo Co., Limited and its subsidiary companies. + */ +#ifndef _PORT_H_ +#define _PORT_H_ + +/* +This port.h is really a right-of-passage for anyone trying to port the emulator + to another platform. It must have started out as a set of defines for a + single platform, and instead of using define blocks as new platforms were + added, individual coders simply added exceptions and sprinkled #ifdef and #ifndef + statements throughout the original list. + +I can't take it anymore, it's too convoluted. So I've commented out the entire + section, and preemptively rewritten the first #define segment the way god intended, + with a single define-block for each target platform. +*/ + +/* +** _SNESPPC DEFINES +*/ + +#ifdef __GIZ__ + +//Title +#define TITLE "Snes9x" + +//Required Includes +#include "pixform.h" +#include <zlib.h> //RC +//#include <windows.h> +#include <limits.h> +#include <string.h> +//Types Defined +typedef unsigned char bool8; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; +typedef signed char int8; +typedef short int16; +typedef int int32; +typedef long long int64; + +//CSNES Types for conversion to 32 bit +/*typedef unsigned long bool8_32; +typedef unsigned long uint8_32; +typedef unsigned long uint16_32; +typedef long int8_32; +typedef long int16_32;*/ + +//For Debugging Purposes: + +typedef unsigned char bool8_32; +typedef unsigned char uint8_32; +typedef unsigned short uint16_32; +typedef signed char int8_32; +typedef short int16_32; + + +//Defines for Extern C +#define EXTERN_C extern +#define START_EXTERN_C extern "C" { +#define END_EXTERN_C } + +//Path Defines +#undef _MAX_PATH +#define _MAX_DIR PATH_MAX +#define _MAX_DRIVE 1 +#define _MAX_FNAME PATH_MAX +#define _MAX_EXT PATH_MAX +#define PATH_MAX 1024 +#define _MAX_PATH (1024) + +//True/False Defines +#define TRUE 1 +#define FALSE 0 + +//Slash Char Definitions +#define SLASH_STR "/" +#define SLASH_CHAR '/' + +//Misc Items +#define VAR_CYCLES +//#define SPC700_SHUTDOWN +#define LSB_FIRST +#define STATIC static +#define FASTCALL +#define PIXEL_FORMAT RGB565 +#define CHECK_SOUND() +#define VOID void +#define CPU_SHUTDOWN +#define UNZIP_SUPPORT +#define ZeroMemory(a,b) memset((a),0,(b)) +#define PACKING __attribute__ ((packed)) +#define ALIGN_BY_ONE __attribute__ ((aligned (1), packed)) +#define LSB_FIRST +#undef FAST_LSB_WORD_ACCESS +#ifdef ASMCPU + #define ASM_SPC700 +#endif + +EXTERN_C void S9xGenerateSound (); + +//Additional Items for _SNESPPC port +void _makepath (char *path, const char *drive, const char *dir, + const char *fname, const char *ext); +void _splitpath (const char *path, char *drive, char *dir, char *fname, + char *ext); +#define strcasecmp strcmp +#define strncasecmp strncmp +#define time(a) (0) + +#ifdef INLINE +#undef INLINE +#define INLINE __inline +#endif + +#ifdef inline +#undef inline +#define inline __inline +#endif + +#endif // _SNESPPC + +#if defined(__GP2X__) || defined(__WIZ__) + +#define ZDELTA 0x13000 + +//Title +#define TITLE "Snes9x" + +//Required Includes +#include "pixform.h" +#include <zlib.h> //RC +//#include <windows.h> +#include <limits.h> +#include <string.h> +//Types Defined +typedef unsigned char bool8; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int bool32; +typedef unsigned int uint32; +typedef signed char int8; +typedef short int16; +typedef int int32; +typedef long long int64; + +//CSNES Types for conversion to 32 bit +/*typedef unsigned long bool8_32; +typedef unsigned long uint8_32; +typedef unsigned long uint16_32; +typedef long int8_32; +typedef long int16_32;*/ + +//For Debugging Purposes: + +typedef unsigned char bool8_32; +typedef unsigned char uint8_32; +typedef unsigned short uint16_32; +typedef signed char int8_32; +typedef short int16_32; + +//Defines for Extern C +#define EXTERN_C extern +#define START_EXTERN_C extern "C" { +#define END_EXTERN_C } + +//Path Defines +#undef _MAX_PATH +#define _MAX_DIR PATH_MAX +#define _MAX_DRIVE 1 +#define _MAX_FNAME PATH_MAX +#define _MAX_EXT PATH_MAX +#define _MAX_PATH (1024) + +//True/False Defines +#define TRUE 1 +#define FALSE 0 + +//Slash Char Definitions +#define SLASH_STR "/" +#define SLASH_CHAR '/' + +//Misc Items +#define VAR_CYCLES +//#define SPC700_SHUTDOWN +#define LSB_FIRST +#define STATIC static +#define FASTCALL +#define PIXEL_FORMAT RGB565 +#define CHECK_SOUND() +#define VOID void +#define CPU_SHUTDOWN +#define UNZIP_SUPPORT +#define ZeroMemory(a,b) memset((a),0,(b)) +#define PACKING __attribute__ ((packed)) +#define ALIGN_BY_ONE __attribute__ ((aligned (1), packed)) +#define LSB_FIRST +#undef FAST_LSB_WORD_ACCESS +#define ASM_SPC700 +#define SUPER_FX + +EXTERN_C void S9xGenerateSound (); + +//Additional Items for _SNESPPC port +void _makepath (char *path, const char *drive, const char *dir, + const char *fname, const char *ext); +void _splitpath (const char *path, char *drive, char *dir, char *fname, + char *ext); +#define strcasecmp strcmp +#define strncasecmp strncmp +#define time(a) (0) + +#ifdef INLINE +#undef INLINE +#define INLINE inline +#endif + +#endif // _SNESPPC +#endif // _PORT_H_ + +/* +#ifndef _SNESPPC +#define _SNESPPC +#endif + +#ifndef RC_OPTIMIZED +#define RC_OPTIMIZED +#endif + +#ifdef inline +#undef inline +#endif + +#ifdef INLINE +#undef INLINE +#endif + +#define inline __inline +#define INLINE __inline + +#ifdef DEBUG +#ifndef _PROFILE_ +#define _PROFILE_ +#endif +#endif + +#ifndef _SNESPPC +#ifndef STORM +#include <memory.h> +#include <string.h> +#else +//#include <strings.h> +//#include <clib/powerpc_protos.h> +#endif + +#include <sys/types.h> +#else +#include <windows.h> +#endif + +#define PIXEL_FORMAT RGB565 +//#define GFX_MULTI_FORMAT + +#if defined(TARGET_OS_MAC) && TARGET_OS_MAC + +#ifdef _SNESPPC +#include "zlib/zlib.h" //RC +#else +#include "zlib.h" +#endif + +#define ZLIB +#define EXECUTE_SUPERFX_PER_LINE +#define SOUND +#define VAR_CYCLES +#define CPU_SHUTDOWN +#define SPC700_SHUTDOWN +#define PIXEL_FORMAT RGB555 +#define CHECK_SOUND() +#define M_PI 3.14159265359 +#undef _MAX_PATH + +#undef DEBUGGER // Apple Universal Headers sometimes #define DEBUGGER +#undef GFX_MULTI_FORMAT + +int strncasecmp(const char *s1, const char *s2, unsigned n); +int strcasecmp(const char *s1, const char *s2 ); + +#endif + +#ifndef snes9x_types_defined +#define snes9x_types_defined + +//CSNES +#ifdef _SNESPPC +typedef unsigned long bool8; +#else +typedef unsigned char bool8; +#endif + +#ifndef __WIN32__ +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef signed char int8; +typedef short int16; +//typedef long int32; +//typedef unsigned long uint32; +typedef int int32; +typedef unsigned int uint32; +#ifdef _SNESPPC +typedef __int64 int64; +//CSNES +typedef unsigned long uint8_32; +typedef unsigned long uint16_32; +typedef long int8_32; +typedef long int16_32; + +#else +typedef long long int64; +#endif +#else // __WIN32__ + +#ifdef __BORLANDC__ +//#include <systypes.h> +#else + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef signed char int8; +typedef short int16; + +#ifndef WSAAPI +// winsock2.h typedefs int32 as well. +typedef long int32; +#endif + +typedef unsigned int uint32; + +#endif // __BORLANDC__ + +typedef __int64 int64; + +#endif // __WIN32__ +#endif // snes9x_types_defined +#include "pixform.h" + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifdef STORM +#define EXTERN_C +#define START_EXTERN_C +#define END_EXTERN_C +#else +#if defined(__cplusplus) || defined(c_plusplus) +#define EXTERN_C extern "C" +#define START_EXTERN_C extern "C" { +#define END_EXTERN_C } +#else +#define EXTERN_C extern +#define START_EXTERN_C +#define END_EXTERN_C +#endif +#endif + +#ifndef __WIN32__ + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +#define _MAX_DIR PATH_MAX +#define _MAX_DRIVE 1 +#define _MAX_FNAME PATH_MAX +#define _MAX_EXT PATH_MAX +#ifndef _MAX_PATH +#define _MAX_PATH PATH_MAX +#endif + +#ifdef _SNESPPC +#define strcasecmp strcmp +#define strncasecmp strncmp +#define time(a) (0) +#ifdef _MAX_PATH +#undef _MAX_PATH +#define _MAX_PATH (1024) +#endif +#endif + +#define ZeroMemory(a,b) memset((a),0,(b)) + +void _makepath (char *path, const char *drive, const char *dir, + const char *fname, const char *ext); +void _splitpath (const char *path, char *drive, char *dir, char *fname, + char *ext); +#else // __WIN32__ +#define strcasecmp stricmp +#define strncasecmp strnicmp +#endif + +EXTERN_C void S9xGenerateSound (); + +#ifdef STORM +EXTERN_C int soundsignal; +EXTERN_C void MixSound(void); +//Yes, CHECK_SOUND is getting defined correctly! +#define CHECK_SOUND if (Settings.APUEnabled) if(SetSignalPPC(0L, soundsignal) & soundsignal) MixSound +#else +#define CHECK_SOUND() +#endif + +#ifdef __DJGPP +#define SLASH_STR "\\" +#define SLASH_CHAR '\\' +#else +#define SLASH_STR "/" +#define SLASH_CHAR '/' +#endif + +#ifdef __linux +typedef void (*SignalHandler)(int); +#define SIG_PF SignalHandler +#endif + +#if defined(__i386__) || defined(__i486__) || defined(__i586__) || \ + defined(__WIN32__) || defined(__alpha__) +#define LSB_FIRST +#define FAST_LSB_WORD_ACCESS +#else +#ifdef _SNESPPC +#define LSB_FIRST +//NOPE! #define FAST_LSB_WORD_ACCESS //RC +#else +#define MSB_FIRST +#endif +#endif + +#ifdef __sun +#define TITLE "Snes9X: Solaris" +#endif + +#ifdef __linux +#define TITLE "Snes9X: Linux" +#endif + +#ifndef TITLE +#define TITLE "Snes9x" +#endif + +#ifdef STORM +#define STATIC +#define strncasecmp strnicmp +#else +#define STATIC static +#endif + +#endif +*/ + |