1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Nestopia - NES/Famicom emulator written in C++
//
// Copyright (C) 2003-2008 Martin Freij
//
// This file is part of Nestopia.
//
// Nestopia is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Nestopia is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Nestopia; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
////////////////////////////////////////////////////////////////////////////////////////
*/
#ifndef NST_BASE_H
#error Do not include NstApConfig.hpp directly!
#endif
/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Compiler Configuration:
// -----------------------
//
// NST_DEBUG - Debug mode compilation.
//
// NST_PRAGMA_ONCE - Define if #pragma once is supported. Auto-defined if
// compiler is MCW or MSVC.
//
// NST_U64 <type> - For native 64bit (or greater) integer support. May not
// be needed if compiler is BC, GCC, ICC, MSVC or supports
// the C99 long long integer type.
//
// Example: #define NST_U64 unsigned long long
//
// If no suitable type is available, a default class based
// implementation will be used which may generate slower code.
//
// NST_MM_INTRINSICS - For MMX/SSE compiler intrinsics support through
// xmmintrin.h/emmintrin.h/mmintrin.h. Auto-defined if
// compiler is Win32 MSVC and _M_IX86 is defined.
//
// NST_CALL <attribute> - Compiler/platform specific calling convention for non-member
// functions. Placed between return type and function name, e.g
// void NST_CALL DoSomething().
//
// Example usage on a Win32 platform: #define NST_CALL __fastcall
//
// NST_CALLBACK <attribute> - Same as above but for user-callback functions only. If
// defined, you're responsible for decorating your own
// callback functions with it.
//
// NST_LINEBREAK <string> - Character sequence for line breaks. Default is "\n", or "\r\n"
// if target platform is Win32.
//
// Example usage in Nestopia:
//
// Print( "Hey!" NST_LINEBREAK "get off my lawn!" NST_LINEBREAK );
//
// NST_NO_INLINE <attribute> - To prevent automatic inline expansion of certain functions
// that won't benefit from it. Auto-defined if compiler is
// GCC, ICC or MSVC.
//
// NST_RESTRICT <attribute> - C99 restrict qualifier support. Used on pointer types to
// inform the compiler that they're are not aliased which may
// enable it to generate faster code. Auto-defined if compiler
// is GCC, ICC or MSVC.
//
// NST_ASSUME(x) y(x) - Optimization hint for the compiler. Informs that the condition
// will always evaluate to true. Should not be used if the condition
// checking imposes a performance penalty as it's not intended for
// debugging use. Auto-defined if compiler is MSVC.
//
// Example usage in Nestopia:
//
// #ifdef NST_DEBUG
// assert( miss_july == hot );
// #else
// NST_ASSUME( miss_july == hot );
// #endif
//
// NST_FASTDELEGATE - Define this if your compiler can handle casts between member
// function pointers of different types and calls through them.
//
// If the size required to store a non-virtual member function
// pointer is deemed too large, as in
//
// sizeof( void (Class::*)() ) > sizeof( void (*)() )
//
// this option is not worth using and Nestopia will force a
// compile time error. Auto-defined if compiler is MSVC.
//
// Abbrevations:
//
// BC - Borland C++
// GCC - GNU Compiler Collection
// ICC - Intel C/C++ Compiler
// MCW - Metrowerks CodeWarrior
// MSVC - Microsoft Visual C++
//
////////////////////////////////////////////////////////////////////////////////////////
*/
/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Define to disable a particular feature.
//
// NST_NO_ZLIB - ZLib compression library. Not recommended to disable
// unless it's unavailable on the target platform. The core
// uses it internally for save states and the rewinder
// feature. Although they'll still work without them, memory
// footprint will increase drastically.
//
// NST_NO_HQ2X - hq2x and hq3x video filters
//
// NST_NO_SCALEX - Scale2x and Scale3x video filters
//
// NST_NO_2XSAI - 2xSaI video filter
//
////////////////////////////////////////////////////////////////////////////////////////
*/
|