2 Skelton for retropc emulator
\r
4 Author : Takeda.Toshiya
\r
13 #if defined(_USE_AGAR) || defined(_USE_SDL)
\r
14 #include <SDL/SDL.h>
\r
15 #include <agar/core.h>
\r
19 typedef uint8_t uint8;
\r
22 typedef int8_t int8;
\r
25 typedef uint16_t uint16;
\r
28 typedef int16_t int16;
\r
31 typedef uint32_t uint32;
\r
34 typedef int32_t int32;
\r
37 typedef uint64_t uint64;
\r
40 typedef int64_t int64;
\r
46 typedef uint8_t BYTE;
\r
49 typedef uint16_t WORD;
\r
52 typedef uint32_t DWORD;
\r
55 typedef uint64_t QWORD;
\r
59 typedef uint8_t UINT8;
\r
62 typedef uint16_t UINT16;
\r
65 typedef uint32_t UINT32;
\r
68 typedef uint64_t UINT64;
\r
72 typedef int8_t INT8;
\r
75 typedef int16_t INT16;
\r
78 typedef int32_t INT32;
\r
81 typedef int64_t INT64;
\r
84 static inline void _stprintf(char *s, const char *fmt, ...) {
\r
87 va_start(args, fmt);
\r
88 sprintf(s, fmt, args);
\r
94 //# define __T(x) L ## x
\r
99 # define _T(x) __T(x)
\r
100 # define _TEXT(x) __T(x)
\r
103 // typedef wchar_t _TCHAR;
\r
105 typedef char _TCHAR;
\r
109 typedef _TCHAR* LPCTSTR;
\r
112 static inline char *_tcscpy(_TCHAR *dst, _TCHAR *src)
\r
114 return strcpy((char *)dst, (char *)src);
\r
117 static inline int _tcsicmp(_TCHAR *a, _TCHAR *b)
\r
119 return strcasecmp((char *)a, (char *)b);
\r
123 static inline void _vstprintf(_TCHAR *s, const char *fmt, va_list argptr) {
\r
124 vsprintf((char *)s, fmt, argptr);
\r
127 static inline char *_tcsncpy(_TCHAR *d, _TCHAR *s, int n) {
\r
128 return strncpy((char *)d, (char *)s, n);
\r
131 static inline char *_tcsncat(_TCHAR *d, _TCHAR *s, int n) {
\r
132 return strncat((char *)d, (char *)s, n);
\r
136 static inline int DeleteFile(_TCHAR *path)
\r
138 return AG_FileDelete((const char *)path);
\r
140 #include <algorithm>
\r
142 # ifdef USE_GETTEXT
\r
143 # include <libintl.h>
\r
144 # define _N(x) gettext(x)
\r
146 # define _N(x) _T(x)
\r
149 #if (SDL_BYTEORDER == SDL_LIL_ENDIAN)
\r
150 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
155 static inline WORD EndianToLittle_WORD(WORD x)
\r
159 #else // BIG_ENDIAN
\r
160 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
163 y = ((x & 0x000000ff) << 24) | ((x & 0x0000ff00) << 8) |
\r
164 ((x & 0x00ff0000) >> 8) | ((x & 0xff000000) >> 24);
\r
168 static inline WORD EndianToLittle_WORD(WORD x)
\r
171 y = ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
\r
175 #define ZeroMemory(p,s) memset(p,0x00,s)
\r
176 #define CopyMemory(t,f,s) memcpy(t,f,s)
\r
182 extern void Sleep(int tick);
\r
183 extern uint32_t timeGetTime(void);
\r
191 // variable scope of 'for' loop for microsoft visual c++ 6.0 and embedded visual c++ 4.0
\r
192 #if defined(_MSC_VER) && (_MSC_VER == 1200)
\r
193 #define for if(0);else for
\r
196 // disable warnings C4189, C4995 and C4996 for microsoft visual c++ 2005
\r
197 #if defined(_MSC_VER) && (_MSC_VER >= 1400)
\r
198 #pragma warning( disable : 4819 )
\r
199 #pragma warning( disable : 4995 )
\r
200 #pragma warning( disable : 4996 )
\r
206 typedef unsigned char uint8;
\r
209 typedef unsigned short uint16;
\r
212 typedef unsigned int uint32;
\r
216 typedef unsigned __int64 uint64;
\r
218 typedef unsigned long long uint64;
\r
223 typedef signed char int8;
\r
226 typedef signed short int16;
\r
229 typedef signed int int32;
\r
233 typedef signed __int64 int64;
\r
235 typedef signed long long int64;
\r
239 static inline DWORD EndianToLittle_DWORD(DWORD x)
\r
244 static inline WORD EndianToLittle_WORD(WORD x)
\r
256 uint8 h3, h2, h, l;
\r
269 uint8 l, h, h2, h3;
\r
288 #if defined(_RGB555)
\r
289 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(b) & 0xf8) >> 3))
\r
290 typedef uint16 scrntype;
\r
291 #elif defined(_RGB565)
\r
292 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 8) | (uint16)(((uint16)(g) & 0xfc) << 3) | (uint16)(((uint16)(b) & 0xf8) >> 3))
\r
293 typedef uint16 scrntype;
\r
294 #elif defined(_RGB888)
\r
295 #define RGB_COLOR(r, g, b) (((uint32)(r) << 16) | ((uint32)(g) << 8) | ((uint32)(b) << 0))
\r
296 typedef uint32 scrntype;
\r
301 bool check_file_extension(_TCHAR* file_path, _TCHAR* ext);
\r
302 _TCHAR *get_file_path_without_extensiton(_TCHAR* file_path);
\r
303 uint32 getcrc32(uint8 data[], int size);
\r
306 #define array_length(array) (sizeof(array) / sizeof(array[0]))
\r
308 #define FROM_BCD(v) (((v) & 0x0f) + (((v) >> 4) & 0x0f) * 10)
\r
309 #define TO_BCD(v) ((int)(((v) % 100) / 10) << 4) | ((v) % 10)
\r
310 #define TO_BCD_LO(v) ((v) % 10)
\r
311 #define TO_BCD_HI(v) (int)(((v) % 100) / 10)
\r
313 #define LEAP_YEAR(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
\r
315 typedef struct cur_time_t {
\r
316 int year, month, day, day_of_week, hour, minute, second;
\r
320 initialized = false;
\r
323 void update_year();
\r
324 void update_day_of_week();
\r
325 void save_state(void *f);
\r
326 bool load_state(void *f);
\r