annotate Plugins/Input/console/blargg_common.h @ 334:0daaddb10914 trunk

[svn] Implement GYM playback.
author chainsaw
date Sun, 25 Dec 2005 13:31:46 -0800
parents 245b1307e182
children 7c5e886205ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
2 // Common headers used by Shay Green's libraries
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
3
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
4 // Copyright (C) 2004-2005 Shay Green.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
5
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
6 #ifndef BLARGG_COMMON_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
7 #define BLARGG_COMMON_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
8
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
9 // Allow prefix configuration file *which can re-include blargg_common.h*
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
10 // (probably indirectly).
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
11 #ifdef HAVE_CONFIG_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
12 #undef BLARGG_COMMON_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
13 #include "config.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
14 #define BLARGG_COMMON_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
15 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
16
92
6bfea334e57d [svn] Pass correct endianness information to the library.
nenolod
parents: 90
diff changeset
17 #ifdef WORDS_BIGENDIAN
93
245b1307e182 [svn] More endianness fixes.
nenolod
parents: 92
diff changeset
18 # define BLARGG_BIG_ENDIAN 1
92
6bfea334e57d [svn] Pass correct endianness information to the library.
nenolod
parents: 90
diff changeset
19 #else
93
245b1307e182 [svn] More endianness fixes.
nenolod
parents: 92
diff changeset
20 # define BLARGG_LITTLE_ENDIAN 1
92
6bfea334e57d [svn] Pass correct endianness information to the library.
nenolod
parents: 90
diff changeset
21 #endif
6bfea334e57d [svn] Pass correct endianness information to the library.
nenolod
parents: 90
diff changeset
22
90
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
23 // Source files use #include BLARGG_ENABLE_OPTIMIZER before performance-critical code
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
24 #ifndef BLARGG_ENABLE_OPTIMIZER
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
25 #define BLARGG_ENABLE_OPTIMIZER "blargg_common.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
26 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
27
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
28 // Source files have #include BLARGG_SOURCE_BEGIN at the beginning
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
29 #ifndef BLARGG_SOURCE_BEGIN
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
30 #define BLARGG_SOURCE_BEGIN "blargg_source.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
31 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
32
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
33 // Determine compiler's language support
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
34
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
35 #if defined (__MWERKS__)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
36 // Metrowerks CodeWarrior
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
37 #define BLARGG_COMPILER_HAS_NAMESPACE 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
38 #if !__option(bool)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
39 #define BLARGG_COMPILER_HAS_BOOL 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
40 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
41
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
42 #elif defined (_MSC_VER)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
43 // Microsoft Visual C++
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
44 #if _MSC_VER < 1100
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
45 #define BLARGG_COMPILER_HAS_BOOL 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
46 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
47
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
48 #elif defined (__GNUC__)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
49 // GNU C++
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
50 #define BLARGG_COMPILER_HAS_BOOL 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
51
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
52 #elif defined (__MINGW32__)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
53 // Mingw?
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
54 #define BLARGG_COMPILER_HAS_BOOL 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
55
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
56 #elif __cplusplus < 199711
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
57 // Pre-ISO C++ compiler
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
58 #define BLARGG_COMPILER_HAS_BOOL 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
59
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
60 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
61
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
62 // Set up boost
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
63 #include "boost/config.hpp"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
64 #ifndef BOOST_MINIMAL
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
65 #define BOOST boost
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
66 #ifndef BLARGG_COMPILER_HAS_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
67 #define BLARGG_COMPILER_HAS_NAMESPACE 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
68 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
69 #ifndef BLARGG_COMPILER_HAS_BOOL
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
70 #define BLARGG_COMPILER_HAS_BOOL 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
71 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
72 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
73
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
74 // Bool support
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
75 #ifndef BLARGG_COMPILER_HAS_BOOL
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
76 #define BLARGG_COMPILER_HAS_BOOL 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
77 #elif !BLARGG_COMPILER_HAS_BOOL
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
78 typedef int bool;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
79 const bool true = 1;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
80 const bool false = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
81 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
82
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
83 // Set up namespace support
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
84
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
85 #ifndef BLARGG_COMPILER_HAS_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
86 #define BLARGG_COMPILER_HAS_NAMESPACE 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
87 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
88
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
89 #ifndef BLARGG_USE_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
90 #define BLARGG_USE_NAMESPACE BLARGG_COMPILER_HAS_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
91 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
92
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
93 #ifndef BOOST
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
94 #if BLARGG_USE_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
95 #define BOOST boost
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
96 #else
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
97 #define BOOST
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
98 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
99 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
100
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
101 #undef BLARGG_BEGIN_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
102 #undef BLARGG_END_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
103 #if BLARGG_USE_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
104 #define BLARGG_BEGIN_NAMESPACE( name ) namespace name {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
105 #define BLARGG_END_NAMESPACE }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
106 #else
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
107 #define BLARGG_BEGIN_NAMESPACE( name )
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
108 #define BLARGG_END_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
109 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
110
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
111 #if BLARGG_USE_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
112 #define STD std
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
113 #else
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
114 #define STD
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
115 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
116
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
117 // BOOST::uint8_t, BOOST::int16_t, etc.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
118 #include "boost/cstdint.hpp"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
119
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
120 // BOOST_STATIC_ASSERT( expr )
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
121 #include "boost/static_assert.hpp"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
122
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
123 // Common standard headers
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
124 #if BLARGG_COMPILER_HAS_NAMESPACE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
125 #include <cstddef>
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
126 #include <cassert>
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
127 #else
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
128 #include <stddef.h>
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
129 #include <assert.h>
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
130 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
131
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
132 // blargg_err_t (NULL on success, otherwise error string)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
133 typedef const char* blargg_err_t;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
134 const blargg_err_t blargg_success = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
135
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
136 // BLARGG_BIG_ENDIAN and BLARGG_LITTLE_ENDIAN
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
137 #if !defined (BLARGG_BIG_ENDIAN) && !defined (BLARGG_LITTLE_ENDIAN)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
138 #if defined (__powerc) || defined (macintosh)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
139 #define BLARGG_BIG_ENDIAN 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
140
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
141 #elif defined (_MSC_VER) && defined (_M_IX86)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
142 #define BLARGG_LITTLE_ENDIAN 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
143
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
144 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
145 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
146
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
147 // BLARGG_NONPORTABLE (allow use of nonportable optimizations/features)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
148 #ifndef BLARGG_NONPORTABLE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
149 #define BLARGG_NONPORTABLE 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
150 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
151 #ifdef BLARGG_MOST_PORTABLE
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
152 #error "BLARGG_MOST_PORTABLE has been removed; see BLARGG_NONPORTABLE."
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
153 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
154
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
155 // BLARGG_CPU_*
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
156 #if !defined (BLARGG_CPU_POWERPC) && !defined (BLARGG_CPU_X86)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
157 #if defined (__powerc)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
158 #define BLARGG_CPU_POWERPC 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
159
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
160 #elif defined (_MSC_VER) && defined (_M_IX86)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
161 #define BLARGG_CPU_X86 1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
162
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
163 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
164 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
165
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
166 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
167