2 Skelton for retropc emulator
\r
4 Author : Takeda.Toshiya
\r
13 #if defined(_USE_AGAR) || defined(_USE_SDL)
\r
17 typedef uint8_t uint8;
\r
20 typedef int8_t int8;
\r
23 typedef uint16_t uint16;
\r
26 typedef int16_t int16;
\r
29 typedef uint32_t uint32;
\r
32 typedef int32_t int32;
\r
35 typedef uint64_t uint64;
\r
38 typedef int64_t int64;
\r
44 typedef uint8_t BYTE;
\r
47 typedef uint16_t WORD;
\r
50 typedef uint32_t DWORD;
\r
53 typedef uint64_t QWORD;
\r
60 # define __T(x) L ## x
\r
65 # define _T(x) __T(x)
\r
66 # define _TEXT(x) __T(x)
\r
69 typedef wchar_t _TCHAR;
\r
71 typedef char _TCHAR;
\r
75 typedef _TCHAR LPCTSTR;
\r
78 # ifdef _USE_GETTEXT
\r
79 # include <libintl.h>
\r
80 # define _N(x) gettext(x)
\r
82 # define _N(x) _T(x)
\r
85 #if (SDL_BYTEORDER == SDL_LIL_ENDIAN)
\r
86 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
91 static inline WORD EndianToLittle_WORD(WORD x)
\r
96 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
99 y = ((x & 0x000000ff) << 24) | ((x & 0x0000ff00) << 8) |
\r
100 ((x & 0x00ff0000) >> 8) | ((x & 0xff000000) >> 24);
\r
104 static inline WORD EndianToLittle_WORD(WORD x)
\r
107 y = ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
\r
111 #define ZeroMemory(p,s) memset(p,0x00,s)
\r
112 #define CopyMemory(t,f,s) memcopy(t,f,s)
\r
116 extern void Sleep(int tick);
\r
117 extern uint32_t timeGetTime(void);
\r
124 // variable scope of 'for' loop for microsoft visual c++ 6.0 and embedded visual c++ 4.0
\r
125 #if defined(_MSC_VER) && (_MSC_VER == 1200)
\r
126 #define for if(0);else for
\r
129 // disable warnings C4189, C4995 and C4996 for microsoft visual c++ 2005
\r
130 #if defined(_MSC_VER) && (_MSC_VER >= 1400)
\r
131 #pragma warning( disable : 4819 )
\r
132 #pragma warning( disable : 4995 )
\r
133 #pragma warning( disable : 4996 )
\r
139 typedef unsigned char uint8;
\r
142 typedef unsigned short uint16;
\r
145 typedef unsigned int uint32;
\r
149 typedef unsigned __int64 uint64;
\r
151 typedef unsigned long long uint64;
\r
156 typedef signed char int8;
\r
159 typedef signed short int16;
\r
162 typedef signed int int32;
\r
166 typedef signed __int64 int64;
\r
168 typedef signed long long int64;
\r
171 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
176 static inline WORD EndianToLittle_WORD(WORD x)
\r
188 uint8 h3, h2, h, l;
\r
201 uint8 l, h, h2, h3;
\r
220 #if defined(_RGB555)
\r
221 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(b) & 0xf8) >> 3))
\r
222 typedef uint16 scrntype;
\r
223 #elif defined(_RGB565)
\r
224 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 8) | (uint16)(((uint16)(g) & 0xfc) << 3) | (uint16)(((uint16)(b) & 0xf8) >> 3))
\r
225 typedef uint16 scrntype;
\r
226 #elif defined(_RGB888)
\r
227 #define RGB_COLOR(r, g, b) (((uint32)(r) << 16) | ((uint32)(g) << 8) | ((uint32)(b) << 0))
\r
228 typedef uint32 scrntype;
\r
232 bool check_file_extension(_TCHAR* file_path, _TCHAR* ext);
\r
233 _TCHAR *get_file_path_without_extensiton(_TCHAR* file_path);
\r
234 uint32 getcrc32(uint8 data[], int size);
\r
236 #define array_length(array) (sizeof(array) / sizeof(array[0]))
\r
238 #define FROM_BCD(v) (((v) & 0x0f) + (((v) >> 4) & 0x0f) * 10)
\r
239 #define TO_BCD(v) ((int)(((v) % 100) / 10) << 4) | ((v) % 10)
\r
240 #define TO_BCD_LO(v) ((v) % 10)
\r
241 #define TO_BCD_HI(v) (int)(((v) % 100) / 10)
\r
243 #define LEAP_YEAR(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
\r
245 typedef struct cur_time_t {
\r
246 int year, month, day, day_of_week, hour, minute, second;
\r
250 initialized = false;
\r
253 void update_year();
\r
254 void update_day_of_week();
\r
255 void save_state(void *f);
\r
256 bool load_state(void *f);
\r