1 #ifndef _WIN32_H_ 2 #define _WIN32_H_ 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 #define WIN32_LEAN_AND_MEAN 9 #define WIN32_EXTRA_LEAN 10 11 #include <windows.h> 12 #include <windowsx.h> 13 #include <mmsystem.h> 14 #include <commdlg.h> 15 #include <stdlib.h> 16 #include <stdio.h> 17 #include <strstrea.h> 18 #include <fstream.h> 19 #include <time.h> 20 #include <assert.h> 21 #include <gl/gl.h> 22 #include <gl/glu.h> 23 #include <win32/glext.h> 24 25 #ifndef __cplusplus 26 #include "math.h" 27 #define cosf (float)cos 28 #define sinf (float)sin 29 #define tanf (float)tan 30 #define sqrtf (float)sqrt 31 #define fabsf (float)fabs 32 #define acosf (float)acos 33 #define inline __inline 34 #endif 35 36 #pragma warning (disable:4244) // (type conversion) Possible loss of data 37 #pragma warning (disable:4761) // 38 #pragma warning (disable:4018) // sign mismatch 39 #pragma warning (disable:4068) // unknown pragma 40 41 void WinInit(); 42 void WinSwapBuffers(); 43 void WinDestroy(); 44 45 //PPC opcode that needs to be a function on win32 46 unsigned __int32 __cntlzw(unsigned __int32 d); //u32 NumLeadingZeros(u32 d) from DOLPHIN\build\libraries\gx\src\GXTexture.c(257) 47 48 49 typedef struct WinKey_Str { 50 int button; 51 int stickX; // -127 <= stickX <= 127 52 int stickY; // -127 <= stickY <= 127 53 int substickX; // -127 <= stickX <= 127 54 int substickY; // -127 <= stickY <= 127 55 int triggerLeft; // 0 - 255 56 int triggerRight; // 0 - 255 57 unsigned int down[64]; 58 int downCnt; 59 unsigned int up[64]; 60 int upCnt; 61 } WinKey; 62 extern WinKey winKey; 63 64 // change the byte order 65 void EndianSwap32(void* buffer); 66 void EndianSwap16(void* buffer); 67 unsigned __int32 EndianSwapReturn32(void* buffer); 68 unsigned __int16 EndianSwapReturn16(void* buffer); 69 70 #ifndef NO_MULTI_TEX 71 // OpenGL Extension Function Prototypes 72 extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; 73 extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB; 74 extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB; 75 #endif 76 extern int multiTexOn; 77 78 // Output Window Handle 79 extern HANDLE outputWinHandle; 80 extern HANDLE inputWinHandle; 81 extern FILE * outfile; 82 83 // Paths 84 extern char initialPath[]; 85 extern char installPath[]; 86 87 extern unsigned int retraceCount; 88 89 #define APP_STRING "PC Dolphin Emulator 2.8" 90 #define KEY_STRING "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\pcemu.Exe" 91 92 #define WINKEY_PAD_BUTTON_LEFT PAD_BUTTON_LEFT 93 #define WINKEY_PAD_BUTTON_RIGHT PAD_BUTTON_RIGHT 94 #define WINKEY_PAD_BUTTON_DOWN PAD_BUTTON_DOWN 95 #define WINKEY_PAD_BUTTON_UP PAD_BUTTON_UP 96 #define WINKEY_PAD_TRIGGER_Z PAD_TRIGGER_Z 97 #define WINKEY_PAD_TRIGGER_R PAD_TRIGGER_R 98 #define WINKEY_PAD_TRIGGER_L PAD_TRIGGER_L 99 #define WINKEY_PAD_BUTTON_A PAD_BUTTON_A 100 #define WINKEY_PAD_BUTTON_B PAD_BUTTON_B 101 #define WINKEY_PAD_BUTTON_X PAD_BUTTON_X 102 #define WINKEY_PAD_BUTTON_Y PAD_BUTTON_Y 103 #define WINKEY_PAD_BUTTON_MENU PAD_BUTTON_MENU 104 #define WINKEY_PAD_ORIGIN PAD_ORIGIN 105 106 107 /* Types of Pads */ 108 #define PCPAD_TYPE_UNKNOWN 0 109 #define PCPAD_TYPE_GAMEPAD 1 110 #define PCPAD_TYPE_GAMEPADPRO 2 111 #define PCPAD_TYPE_FREESTYLEPRO 3 112 #define PCPAD_TYPE_3DPRO 4 113 #define PCPAD_TYPE_ISHOCK 5 114 #define PCPAD_TYPE_GRAVISPADPRO 6 115 116 /* Joystate fields for each Gamepad button */ 117 #define PCPAD_GAMEPAD_BUTTON_A 0 118 #define PCPAD_GAMEPAD_BUTTON_B 1 119 #define PCPAD_GAMEPAD_BUTTON_C 2 120 #define PCPAD_GAMEPAD_BUTTON_X 3 121 #define PCPAD_GAMEPAD_BUTTON_Y 4 122 #define PCPAD_GAMEPAD_BUTTON_Z 5 123 #define PCPAD_GAMEPAD_BUTTON_L 6 124 #define PCPAD_GAMEPAD_BUTTON_R 7 125 #define PCPAD_GAMEPAD_BUTTON_START 8 126 #define PCPAD_GAMEPAD_BUTTON_SELECT 9 127 128 /* Joystate fields for each Gamepadpro button */ 129 #define PCPAD_GAMEPADPRO_BUTTON_A 0 130 #define PCPAD_GAMEPADPRO_BUTTON_B 1 131 #define PCPAD_GAMEPADPRO_BUTTON_C 2 132 #define PCPAD_GAMEPADPRO_BUTTON_X 3 133 #define PCPAD_GAMEPADPRO_BUTTON_Y 4 134 #define PCPAD_GAMEPADPRO_BUTTON_Z 5 135 #define PCPAD_GAMEPADPRO_BUTTON_L 6 136 #define PCPAD_GAMEPADPRO_BUTTON_R 7 137 #define PCPAD_GAMEPADPRO_BUTTON_START 8 138 139 /* Joystate fields for each FreestylePro button */ 140 #define PCPAD_FREESTYLEPRO_BUTTON_A 0 141 #define PCPAD_FREESTYLEPRO_BUTTON_B 1 142 #define PCPAD_FREESTYLEPRO_BUTTON_C 2 143 #define PCPAD_FREESTYLEPRO_BUTTON_X 3 144 #define PCPAD_FREESTYLEPRO_BUTTON_Y 4 145 #define PCPAD_FREESTYLEPRO_BUTTON_Z 5 146 #define PCPAD_FREESTYLEPRO_BUTTON_L 6 147 #define PCPAD_FREESTYLEPRO_BUTTON_R 7 148 #define PCPAD_FREESTYLEPRO_BUTTON_START 8 149 #define PCPAD_FREESTYLEPRO_BUTTON_SELECT 9 150 151 #define PCPAD_FREESTYLEPRO_UP 0 152 #define PCPAD_FREESTYLEPRO_UPRIGHT 4500 153 #define PCPAD_FREESTYLEPRO_RIGHT 9000 154 #define PCPAD_FREESTYLEPRO_DOWNRIGHT 13500 155 #define PCPAD_FREESTYLEPRO_DOWN 18000 156 #define PCPAD_FREESTYLEPRO_DOWNLEFT 22500 157 #define PCPAD_FREESTYLEPRO_LEFT 27000 158 #define PCPAD_FREESTYLEPRO_UPLEFT 31500 159 160 /* Joystate fields for each 3DPro button */ 161 #define PCPAD_3DPRO_TRIGGER 0 162 #define PCPAD_3DPRO_BUTTON_THUMB 1 163 #define PCPAD_3DPRO_BUTTON_STICKTOP 2 164 #define PCPAD_3DPRO_BUTTON_STICKBOTTOM 3 165 #define PCPAD_3DPRO_BUTTON_BASEUL 4 166 #define PCPAD_3DPRO_BUTTON_BASEUR 5 167 #define PCPAD_3DPRO_BUTTON_BASELR 6 168 #define PCPAD_3DPRO_BUTTON_BASELL 7 169 #define PCPAD_3DPRO_UP 0 170 #define PCPAD_3DPRO_UPRIGHT 4500 171 #define PCPAD_3DPRO_RIGHT 9000 172 #define PCPAD_3DPRO_DOWNRIGHT 13500 173 #define PCPAD_3DPRO_DOWN 18000 174 #define PCPAD_3DPRO_DOWNLEFT 22500 175 #define PCPAD_3DPRO_LEFT 27000 176 #define PCPAD_3DPRO_UPLEFT 31500 177 178 /* Joystate fields for each iShock button */ 179 #define PCPAD_ISHOCK_BUTTON_DPAD_UP 0 180 #define PCPAD_ISHOCK_BUTTON_DPAD_DOWN 1 181 #define PCPAD_ISHOCK_BUTTON_DPAD_LEFT 2 182 #define PCPAD_ISHOCK_BUTTON_DPAD_RIGHT 3 183 #define PCPAD_ISHOCK_BUTTON_TRIANGLE 4 184 #define PCPAD_ISHOCK_BUTTON_CIRCLE 5 185 #define PCPAD_ISHOCK_BUTTON_X 6 186 #define PCPAD_ISHOCK_BUTTON_SQUARE 7 187 #define PCPAD_ISHOCK_BUTTON_C 8 188 #define PCPAD_ISHOCK_BUTTON_B 9 189 #define PCPAD_ISHOCK_BUTTON_A 10 190 #define PCPAD_ISHOCK_BUTTON_F 11 191 #define PCPAD_ISHOCK_BUTTON_R1 12 192 #define PCPAD_ISHOCK_BUTTON_R2 13 193 #define PCPAD_ISHOCK_BUTTON_L1 14 194 #define PCPAD_ISHOCK_BUTTON_L2 15 195 #define PCPAD_ISHOCK_BUTTON_JOY_L 16 196 #define PCPAD_ISHOCK_BUTTON_JOY_R 17 197 #define PCPAD_ISHOCK_BUTTON_D 18 198 #define PCPAD_ISHOCK_BUTTON_E 19 199 #define PCPAD_ISHOCK_BUTTON_SELECT 9 200 #define PCPAD_ISHOCK_BUTTON_START 10 201 202 /* Joystate fields for each Gravis GamePad Pro button */ 203 #define PCPAD_GRAVISPADPRO_BUTTON_RED 0 204 #define PCPAD_GRAVISPADPRO_BUTTON_YELLOW 1 205 #define PCPAD_GRAVISPADPRO_BUTTON_GREEN 2 206 #define PCPAD_GRAVISPADPRO_BUTTON_BLUE 3 207 #define PCPAD_GRAVISPADPRO_BUTTON_L1 4 208 #define PCPAD_GRAVISPADPRO_BUTTON_R1 5 209 #define PCPAD_GRAVISPADPRO_BUTTON_L2 6 210 #define PCPAD_GRAVISPADPRO_BUTTON_R2 7 211 #define PCPAD_GRAVISPADPRO_BUTTON_SELECT 8 212 #define PCPAD_GRAVISPADPRO_BUTTON_START 9 213 214 #ifdef __cplusplus 215 } 216 #endif 217 218 #endif 219