text: /*
   * Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
   *
   * (c) Copyright 1996 - 2000 Gary Henderson (gary@daniver.demon.co.uk) 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.
   * DOS port code contains the works of other authors. See headers in
   * individual files.
   *
   * Snes9x homepage: 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_
  
  #include <limits.h>
  
  #ifndef STORM
  #include <memory.h>
  #include <string.h>
  #else
  #include <strings.h>
  #include <clib/powerpc_protos.h>
  #endif
  
  #include <sys/types.h>
  
  //#define PIXEL_FORMAT RGB565
  #define GFX_MULTI_FORMAT
  
  #ifndef snes9x_types_defined
  #define snes9x_types_defined
  typedef unsigned char uint8;
  typedef unsigned short uint16;
  typedef unsigned int uint32;
  typedef unsigned char bool8;
  typedef signed char int8;
  typedef short int16;
  #ifndef _WIN32
  typedef int int32;
  typedef long long int64;
  #else
  #ifndef WSAAPI
  // winsock2.h typedefs int32 as well.
  typedef long int32;
  #endif
  
  typedef __int64 int64;
  #endif
  #endif
  
  #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
  #define ZeroMemory(a,b) memset((a),0,(b))
  #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
  #define _MAX_PATH PATH_MAX
  
  
  
  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__) || defined(__x86_64__) || defined(WIN32)
  #define LSB_FIRST
  #define FAST_LSB_WORD_ACCESS
  #else
  #define MSB_FIRST
  #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
  