From 8b8a386a2c46e79ce4fb0a8b60a4c93384637827 Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 13 Nov 2012 18:51:50 +0000 Subject: [PATCH] mednafen cleanup - remove sdl and directx deps, add lots of HAVE_THIS and HAVE_THAT configurations --- mednafen/dx/XInput.h | 258 - mednafen/dx/dinput.h | 4417 ----------- ...n32-ddraw-dinput8-dsound-dxerr8-dxguid.lib | Bin 1957750 -> 0 bytes mednafen/dx/dsound.h | 2358 ------ mednafen/headless/headless.cpp | 17 + mednafen/headless/headless.h | 26 + mednafen/headless/netplay_stub.cpp | 6 - mednafen/libmednahawk/libmednahawk.cpp | 21 +- mednafen/libmednahawk/libmednahawk.vcxproj | 93 +- .../libmednahawk/libmednahawk.vcxproj.filters | 233 +- mednafen/sdl/include/SDL.h | 101 - mednafen/sdl/include/SDL_active.h | 63 - mednafen/sdl/include/SDL_audio.h | 284 - mednafen/sdl/include/SDL_byteorder.h | 29 - mednafen/sdl/include/SDL_cdrom.h | 202 - mednafen/sdl/include/SDL_config.h | 45 - mednafen/sdl/include/SDL_config.h.default | 45 - mednafen/sdl/include/SDL_config.h.in | 310 - mednafen/sdl/include/SDL_config_dreamcast.h | 106 - mednafen/sdl/include/SDL_config_macos.h | 112 - mednafen/sdl/include/SDL_config_macosx.h | 150 - mednafen/sdl/include/SDL_config_minimal.h | 62 - mednafen/sdl/include/SDL_config_nds.h | 115 - mednafen/sdl/include/SDL_config_os2.h | 141 - mednafen/sdl/include/SDL_config_symbian.h | 146 - mednafen/sdl/include/SDL_copying.h | 22 - mednafen/sdl/include/SDL_cpuinfo.h | 69 - mednafen/sdl/include/SDL_endian.h | 209 - mednafen/sdl/include/SDL_error.h | 72 - mednafen/sdl/include/SDL_events.h | 356 - mednafen/sdl/include/SDL_getenv.h | 28 - mednafen/sdl/include/SDL_joystick.h | 187 - mednafen/sdl/include/SDL_keyboard.h | 135 - mednafen/sdl/include/SDL_keysym.h | 326 - mednafen/sdl/include/SDL_loadso.h | 78 - mednafen/sdl/include/SDL_main.h | 106 - mednafen/sdl/include/SDL_mouse.h | 143 - mednafen/sdl/include/SDL_mutex.h | 177 - mednafen/sdl/include/SDL_name.h | 11 - mednafen/sdl/include/SDL_platform.h | 110 - mednafen/sdl/include/SDL_quit.h | 55 - mednafen/sdl/include/SDL_rwops.h | 155 - mednafen/sdl/include/SDL_stdinc.h | 620 -- mednafen/sdl/include/SDL_syswm.h | 225 - mednafen/sdl/include/SDL_thread.h | 120 - mednafen/sdl/include/SDL_timer.h | 125 - mednafen/sdl/include/SDL_types.h | 28 - mednafen/sdl/include/SDL_version.h | 91 - mednafen/sdl/include/SDL_video.h | 951 --- mednafen/sdl/include/begin_code.h | 191 - mednafen/sdl/include/close_code.h | 46 - mednafen/sdl/include/doxyfile | 946 --- mednafen/sdl/include/sdl_config_win32.h | 184 - mednafen/sdl/include/sdl_opengl.h | 6556 ----------------- mednafen/sdl/sdl-vc8-Win32.lib | Bin 678556 -> 0 bytes mednafen/sdl/sdlmain-vc8-Win32.lib | Bin 9262 -> 0 bytes mednafen/src/FileWrapper.cpp | 8 +- mednafen/src/PACKED.h | 12 + mednafen/src/PACKED_END.h | 3 + mednafen/src/cdrom/cdromif.cpp | 75 +- mednafen/src/cdrom/cdromif.h | 5 +- mednafen/src/drivers/console.cpp | 2 + mednafen/src/drivers/debugger.cpp | 10 +- mednafen/src/drivers/debugger.h | 5 +- mednafen/src/drivers/gfxdebugger.cpp | 5 +- mednafen/src/drivers/gfxdebugger.h | 4 +- mednafen/src/drivers/input.h | 2 + mednafen/src/drivers/logdebugger.cpp | 2 + mednafen/src/drivers/logdebugger.h | 4 +- mednafen/src/drivers/main.h | 2 + mednafen/src/drivers/memdebugger.h | 4 +- mednafen/src/drivers/prompt.cpp | 4 + mednafen/src/drivers/prompt.h | 6 +- mednafen/src/drivers/video.h | 3 +- mednafen/src/file.cpp | 21 +- mednafen/src/file.h | 5 +- mednafen/src/mednafen.cpp | 132 +- mednafen/src/movie.h | 7 +- mednafen/src/psx/cdc.cpp | 8 +- mednafen/src/psx/gpu.cpp | 8 +- mednafen/src/psx/psx.cpp | 3 +- mednafen/src/qtrecord.h | 4 + mednafen/src/state.cpp | 16 +- mednafen/src/state.h | 4 + mednafen/src/video.h | 3 +- 85 files changed, 398 insertions(+), 21631 deletions(-) delete mode 100644 mednafen/dx/XInput.h delete mode 100644 mednafen/dx/dinput.h delete mode 100644 mednafen/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib delete mode 100644 mednafen/dx/dsound.h create mode 100644 mednafen/headless/headless.cpp create mode 100644 mednafen/headless/headless.h delete mode 100644 mednafen/headless/netplay_stub.cpp delete mode 100644 mednafen/sdl/include/SDL.h delete mode 100644 mednafen/sdl/include/SDL_active.h delete mode 100644 mednafen/sdl/include/SDL_audio.h delete mode 100644 mednafen/sdl/include/SDL_byteorder.h delete mode 100644 mednafen/sdl/include/SDL_cdrom.h delete mode 100644 mednafen/sdl/include/SDL_config.h delete mode 100644 mednafen/sdl/include/SDL_config.h.default delete mode 100644 mednafen/sdl/include/SDL_config.h.in delete mode 100644 mednafen/sdl/include/SDL_config_dreamcast.h delete mode 100644 mednafen/sdl/include/SDL_config_macos.h delete mode 100644 mednafen/sdl/include/SDL_config_macosx.h delete mode 100644 mednafen/sdl/include/SDL_config_minimal.h delete mode 100644 mednafen/sdl/include/SDL_config_nds.h delete mode 100644 mednafen/sdl/include/SDL_config_os2.h delete mode 100644 mednafen/sdl/include/SDL_config_symbian.h delete mode 100644 mednafen/sdl/include/SDL_copying.h delete mode 100644 mednafen/sdl/include/SDL_cpuinfo.h delete mode 100644 mednafen/sdl/include/SDL_endian.h delete mode 100644 mednafen/sdl/include/SDL_error.h delete mode 100644 mednafen/sdl/include/SDL_events.h delete mode 100644 mednafen/sdl/include/SDL_getenv.h delete mode 100644 mednafen/sdl/include/SDL_joystick.h delete mode 100644 mednafen/sdl/include/SDL_keyboard.h delete mode 100644 mednafen/sdl/include/SDL_keysym.h delete mode 100644 mednafen/sdl/include/SDL_loadso.h delete mode 100644 mednafen/sdl/include/SDL_main.h delete mode 100644 mednafen/sdl/include/SDL_mouse.h delete mode 100644 mednafen/sdl/include/SDL_mutex.h delete mode 100644 mednafen/sdl/include/SDL_name.h delete mode 100644 mednafen/sdl/include/SDL_platform.h delete mode 100644 mednafen/sdl/include/SDL_quit.h delete mode 100644 mednafen/sdl/include/SDL_rwops.h delete mode 100644 mednafen/sdl/include/SDL_stdinc.h delete mode 100644 mednafen/sdl/include/SDL_syswm.h delete mode 100644 mednafen/sdl/include/SDL_thread.h delete mode 100644 mednafen/sdl/include/SDL_timer.h delete mode 100644 mednafen/sdl/include/SDL_types.h delete mode 100644 mednafen/sdl/include/SDL_version.h delete mode 100644 mednafen/sdl/include/SDL_video.h delete mode 100644 mednafen/sdl/include/begin_code.h delete mode 100644 mednafen/sdl/include/close_code.h delete mode 100644 mednafen/sdl/include/doxyfile delete mode 100644 mednafen/sdl/include/sdl_config_win32.h delete mode 100644 mednafen/sdl/include/sdl_opengl.h delete mode 100644 mednafen/sdl/sdl-vc8-Win32.lib delete mode 100644 mednafen/sdl/sdlmain-vc8-Win32.lib create mode 100644 mednafen/src/PACKED.h create mode 100644 mednafen/src/PACKED_END.h diff --git a/mednafen/dx/XInput.h b/mednafen/dx/XInput.h deleted file mode 100644 index c54327b609..0000000000 --- a/mednafen/dx/XInput.h +++ /dev/null @@ -1,258 +0,0 @@ -/*************************************************************************** -* * -* XInput.h -- This module defines XBOX controller APIs * -* and constansts for the Windows platform. * -* * -* Copyright (c) Microsoft Corp. All rights reserved. * -* * -***************************************************************************/ -#ifndef _XINPUT_H_ -#define _XINPUT_H_ - -#include - -// Current name of the DLL shipped in the same SDK as this header. -// The name reflects the current version -#define XINPUT_DLL_A "xinput1_3.dll" -#define XINPUT_DLL_W L"xinput1_3.dll" -#ifdef UNICODE - #define XINPUT_DLL XINPUT_DLL_W -#else - #define XINPUT_DLL XINPUT_DLL_A -#endif - -// -// Device types available in XINPUT_CAPABILITIES -// -#define XINPUT_DEVTYPE_GAMEPAD 0x01 - -// -// Device subtypes available in XINPUT_CAPABILITIES -// -#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01 -#define XINPUT_DEVSUBTYPE_WHEEL 0x02 -#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 -#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04 -#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 -#define XINPUT_DEVSUBTYPE_GUITAR 0x06 -#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 - -// -// Flags for XINPUT_CAPABILITIES -// -#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004 - -// -// Constants for gamepad buttons -// -#define XINPUT_GAMEPAD_DPAD_UP 0x0001 -#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002 -#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004 -#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 -#define XINPUT_GAMEPAD_START 0x0010 -#define XINPUT_GAMEPAD_BACK 0x0020 -#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040 -#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 -#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 -#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 -#define XINPUT_GAMEPAD_A 0x1000 -#define XINPUT_GAMEPAD_B 0x2000 -#define XINPUT_GAMEPAD_X 0x4000 -#define XINPUT_GAMEPAD_Y 0x8000 - - -// -// Gamepad thresholds -// -#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849 -#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689 -#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30 - -// -// Flags to pass to XInputGetCapabilities -// -#define XINPUT_FLAG_GAMEPAD 0x00000001 - -// -// Devices that support batteries -// -#define BATTERY_DEVTYPE_GAMEPAD 0x00 -#define BATTERY_DEVTYPE_HEADSET 0x01 - -// -// Flags for battery status level -// -#define BATTERY_TYPE_DISCONNECTED 0x00 // This device is not connected -#define BATTERY_TYPE_WIRED 0x01 // Wired device, no battery -#define BATTERY_TYPE_ALKALINE 0x02 // Alkaline battery source -#define BATTERY_TYPE_NIMH 0x03 // Nickel Metal Hydride battery source -#define BATTERY_TYPE_UNKNOWN 0xFF // Cannot determine the battery type - -// These are only valid for wireless, connected devices, with known battery types -// The amount of use time remaining depends on the type of device. -#define BATTERY_LEVEL_EMPTY 0x00 -#define BATTERY_LEVEL_LOW 0x01 -#define BATTERY_LEVEL_MEDIUM 0x02 -#define BATTERY_LEVEL_FULL 0x03 - -// User index definitions -#define XUSER_MAX_COUNT 4 - -#define XUSER_INDEX_ANY 0x000000FF - - -// -// Codes returned for the gamepad keystroke -// - -#define VK_PAD_A 0x5800 -#define VK_PAD_B 0x5801 -#define VK_PAD_X 0x5802 -#define VK_PAD_Y 0x5803 -#define VK_PAD_RSHOULDER 0x5804 -#define VK_PAD_LSHOULDER 0x5805 -#define VK_PAD_LTRIGGER 0x5806 -#define VK_PAD_RTRIGGER 0x5807 - -#define VK_PAD_DPAD_UP 0x5810 -#define VK_PAD_DPAD_DOWN 0x5811 -#define VK_PAD_DPAD_LEFT 0x5812 -#define VK_PAD_DPAD_RIGHT 0x5813 -#define VK_PAD_START 0x5814 -#define VK_PAD_BACK 0x5815 -#define VK_PAD_LTHUMB_PRESS 0x5816 -#define VK_PAD_RTHUMB_PRESS 0x5817 - -#define VK_PAD_LTHUMB_UP 0x5820 -#define VK_PAD_LTHUMB_DOWN 0x5821 -#define VK_PAD_LTHUMB_RIGHT 0x5822 -#define VK_PAD_LTHUMB_LEFT 0x5823 -#define VK_PAD_LTHUMB_UPLEFT 0x5824 -#define VK_PAD_LTHUMB_UPRIGHT 0x5825 -#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826 -#define VK_PAD_LTHUMB_DOWNLEFT 0x5827 - -#define VK_PAD_RTHUMB_UP 0x5830 -#define VK_PAD_RTHUMB_DOWN 0x5831 -#define VK_PAD_RTHUMB_RIGHT 0x5832 -#define VK_PAD_RTHUMB_LEFT 0x5833 -#define VK_PAD_RTHUMB_UPLEFT 0x5834 -#define VK_PAD_RTHUMB_UPRIGHT 0x5835 -#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836 -#define VK_PAD_RTHUMB_DOWNLEFT 0x5837 - -// -// Flags used in XINPUT_KEYSTROKE -// -#define XINPUT_KEYSTROKE_KEYDOWN 0x0001 -#define XINPUT_KEYSTROKE_KEYUP 0x0002 -#define XINPUT_KEYSTROKE_REPEAT 0x0004 - -// -// Structures used by XInput APIs -// -typedef struct _XINPUT_GAMEPAD -{ - WORD wButtons; - BYTE bLeftTrigger; - BYTE bRightTrigger; - SHORT sThumbLX; - SHORT sThumbLY; - SHORT sThumbRX; - SHORT sThumbRY; -} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD; - -typedef struct _XINPUT_STATE -{ - DWORD dwPacketNumber; - XINPUT_GAMEPAD Gamepad; -} XINPUT_STATE, *PXINPUT_STATE; - -typedef struct _XINPUT_VIBRATION -{ - WORD wLeftMotorSpeed; - WORD wRightMotorSpeed; -} XINPUT_VIBRATION, *PXINPUT_VIBRATION; - -typedef struct _XINPUT_CAPABILITIES -{ - BYTE Type; - BYTE SubType; - WORD Flags; - XINPUT_GAMEPAD Gamepad; - XINPUT_VIBRATION Vibration; -} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; - -typedef struct _XINPUT_BATTERY_INFORMATION -{ - BYTE BatteryType; - BYTE BatteryLevel; -} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; - -typedef struct _XINPUT_KEYSTROKE -{ - WORD VirtualKey; - WCHAR Unicode; - WORD Flags; - BYTE UserIndex; - BYTE HidCode; -} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; - -// -// XInput APIs -// -#ifdef __cplusplus -extern "C" { -#endif - -DWORD WINAPI XInputGetState -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - XINPUT_STATE* pState // [out] Receives the current state -); - -DWORD WINAPI XInputSetState -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - XINPUT_VIBRATION* pVibration // [in, out] The vibration information to send to the controller -); - -DWORD WINAPI XInputGetCapabilities -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - DWORD dwFlags, // [in] Input flags that identify the device type - XINPUT_CAPABILITIES* pCapabilities // [out] Receives the capabilities -); - -void WINAPI XInputEnable -( - BOOL enable // [in] Indicates whether xinput is enabled or disabled. -); - -DWORD WINAPI XInputGetDSoundAudioDeviceGuids -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - GUID* pDSoundRenderGuid, // [out] DSound device ID for render - GUID* pDSoundCaptureGuid // [out] DSound device ID for capture -); - -DWORD WINAPI XInputGetBatteryInformation -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - BYTE devType, // [in] Which device on this user index - XINPUT_BATTERY_INFORMATION* pBatteryInformation // [out] Contains the level and types of batteries -); - -DWORD WINAPI XInputGetKeystroke -( - DWORD dwUserIndex, // [in] Index of the gamer associated with the device - DWORD dwReserved, // [in] Reserved for future use - PXINPUT_KEYSTROKE pKeystroke // [out] Pointer to an XINPUT_KEYSTROKE structure that receives an input event. -); - -#ifdef __cplusplus -} -#endif - -#endif //_XINPUT_H_ - diff --git a/mednafen/dx/dinput.h b/mednafen/dx/dinput.h deleted file mode 100644 index bf74e163c4..0000000000 --- a/mednafen/dx/dinput.h +++ /dev/null @@ -1,4417 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved. - * - * File: dinput.h - * Content: DirectInput include file - * - ****************************************************************************/ - -#ifndef __DINPUT_INCLUDED__ -#define __DINPUT_INCLUDED__ - -#ifndef DIJ_RINGZERO - -#ifdef _WIN32 -#define COM_NO_WINDOWS_H -#include -#endif - -#endif /* DIJ_RINGZERO */ - -#ifdef __cplusplus -extern "C" { -#endif - - - - - -/* - * To build applications for older versions of DirectInput - * - * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ] - * - * before #include . By default, #include - * will produce a DirectX 8-compatible header file. - * - */ - -#define DIRECTINPUT_HEADER_VERSION 0x0800 -#ifndef DIRECTINPUT_VERSION -#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION -#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") -#endif - -#ifndef DIJ_RINGZERO - -/**************************************************************************** - * - * Class IDs - * - ****************************************************************************/ - -DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Interfaces - * - ****************************************************************************/ - -DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -/**************************************************************************** - * - * Predefined object types - * - ****************************************************************************/ - -DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Predefined product GUIDs - * - ****************************************************************************/ - -DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Predefined force feedback effects - * - ****************************************************************************/ - -DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Interfaces and Structures... - * - ****************************************************************************/ - -#if(DIRECTINPUT_VERSION >= 0x0500) - -/**************************************************************************** - * - * IDirectInputEffect - * - ****************************************************************************/ - -#define DIEFT_ALL 0x00000000 - -#define DIEFT_CONSTANTFORCE 0x00000001 -#define DIEFT_RAMPFORCE 0x00000002 -#define DIEFT_PERIODIC 0x00000003 -#define DIEFT_CONDITION 0x00000004 -#define DIEFT_CUSTOMFORCE 0x00000005 -#define DIEFT_HARDWARE 0x000000FF -#define DIEFT_FFATTACK 0x00000200 -#define DIEFT_FFFADE 0x00000400 -#define DIEFT_SATURATION 0x00000800 -#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 -#define DIEFT_POSNEGSATURATION 0x00002000 -#define DIEFT_DEADBAND 0x00004000 -#define DIEFT_STARTDELAY 0x00008000 -#define DIEFT_GETTYPE(n) LOBYTE(n) - -#define DI_DEGREES 100 -#define DI_FFNOMINALMAX 10000 -#define DI_SECONDS 1000000 - -typedef struct DICONSTANTFORCE { - LONG lMagnitude; -} DICONSTANTFORCE, *LPDICONSTANTFORCE; -typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; - -typedef struct DIRAMPFORCE { - LONG lStart; - LONG lEnd; -} DIRAMPFORCE, *LPDIRAMPFORCE; -typedef const DIRAMPFORCE *LPCDIRAMPFORCE; - -typedef struct DIPERIODIC { - DWORD dwMagnitude; - LONG lOffset; - DWORD dwPhase; - DWORD dwPeriod; -} DIPERIODIC, *LPDIPERIODIC; -typedef const DIPERIODIC *LPCDIPERIODIC; - -typedef struct DICONDITION { - LONG lOffset; - LONG lPositiveCoefficient; - LONG lNegativeCoefficient; - DWORD dwPositiveSaturation; - DWORD dwNegativeSaturation; - LONG lDeadBand; -} DICONDITION, *LPDICONDITION; -typedef const DICONDITION *LPCDICONDITION; - -typedef struct DICUSTOMFORCE { - DWORD cChannels; - DWORD dwSamplePeriod; - DWORD cSamples; - LPLONG rglForceData; -} DICUSTOMFORCE, *LPDICUSTOMFORCE; -typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; - - -typedef struct DIENVELOPE { - DWORD dwSize; /* sizeof(DIENVELOPE) */ - DWORD dwAttackLevel; - DWORD dwAttackTime; /* Microseconds */ - DWORD dwFadeLevel; - DWORD dwFadeTime; /* Microseconds */ -} DIENVELOPE, *LPDIENVELOPE; -typedef const DIENVELOPE *LPCDIENVELOPE; - - -/* This structure is defined for DirectX 5.0 compatibility */ -typedef struct DIEFFECT_DX5 { - DWORD dwSize; /* sizeof(DIEFFECT_DX5) */ - DWORD dwFlags; /* DIEFF_* */ - DWORD dwDuration; /* Microseconds */ - DWORD dwSamplePeriod; /* Microseconds */ - DWORD dwGain; - DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ - DWORD dwTriggerRepeatInterval; /* Microseconds */ - DWORD cAxes; /* Number of axes */ - LPDWORD rgdwAxes; /* Array of axes */ - LPLONG rglDirection; /* Array of directions */ - LPDIENVELOPE lpEnvelope; /* Optional */ - DWORD cbTypeSpecificParams; /* Size of params */ - LPVOID lpvTypeSpecificParams; /* Pointer to params */ -} DIEFFECT_DX5, *LPDIEFFECT_DX5; -typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; - -typedef struct DIEFFECT { - DWORD dwSize; /* sizeof(DIEFFECT) */ - DWORD dwFlags; /* DIEFF_* */ - DWORD dwDuration; /* Microseconds */ - DWORD dwSamplePeriod; /* Microseconds */ - DWORD dwGain; - DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ - DWORD dwTriggerRepeatInterval; /* Microseconds */ - DWORD cAxes; /* Number of axes */ - LPDWORD rgdwAxes; /* Array of axes */ - LPLONG rglDirection; /* Array of directions */ - LPDIENVELOPE lpEnvelope; /* Optional */ - DWORD cbTypeSpecificParams; /* Size of params */ - LPVOID lpvTypeSpecificParams; /* Pointer to params */ -#if(DIRECTINPUT_VERSION >= 0x0600) - DWORD dwStartDelay; /* Microseconds */ -#endif /* DIRECTINPUT_VERSION >= 0x0600 */ -} DIEFFECT, *LPDIEFFECT; -typedef DIEFFECT DIEFFECT_DX6; -typedef LPDIEFFECT LPDIEFFECT_DX6; -typedef const DIEFFECT *LPCDIEFFECT; - - -#if(DIRECTINPUT_VERSION >= 0x0700) -#ifndef DIJ_RINGZERO -typedef struct DIFILEEFFECT{ - DWORD dwSize; - GUID GuidEffect; - LPCDIEFFECT lpDiEffect; - CHAR szFriendlyName[MAX_PATH]; -}DIFILEEFFECT, *LPDIFILEEFFECT; -typedef const DIFILEEFFECT *LPCDIFILEEFFECT; -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); -#endif /* DIJ_RINGZERO */ -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#define DIEFF_OBJECTIDS 0x00000001 -#define DIEFF_OBJECTOFFSETS 0x00000002 -#define DIEFF_CARTESIAN 0x00000010 -#define DIEFF_POLAR 0x00000020 -#define DIEFF_SPHERICAL 0x00000040 - -#define DIEP_DURATION 0x00000001 -#define DIEP_SAMPLEPERIOD 0x00000002 -#define DIEP_GAIN 0x00000004 -#define DIEP_TRIGGERBUTTON 0x00000008 -#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 -#define DIEP_AXES 0x00000020 -#define DIEP_DIRECTION 0x00000040 -#define DIEP_ENVELOPE 0x00000080 -#define DIEP_TYPESPECIFICPARAMS 0x00000100 -#if(DIRECTINPUT_VERSION >= 0x0600) -#define DIEP_STARTDELAY 0x00000200 -#define DIEP_ALLPARAMS_DX5 0x000001FF -#define DIEP_ALLPARAMS 0x000003FF -#else /* DIRECTINPUT_VERSION < 0x0600 */ -#define DIEP_ALLPARAMS 0x000001FF -#endif /* DIRECTINPUT_VERSION < 0x0600 */ -#define DIEP_START 0x20000000 -#define DIEP_NORESTART 0x40000000 -#define DIEP_NODOWNLOAD 0x80000000 -#define DIEB_NOTRIGGER 0xFFFFFFFF - -#define DIES_SOLO 0x00000001 -#define DIES_NODOWNLOAD 0x80000000 - -#define DIEGES_PLAYING 0x00000001 -#define DIEGES_EMULATED 0x00000002 - -typedef struct DIEFFESCAPE { - DWORD dwSize; - DWORD dwCommand; - LPVOID lpvInBuffer; - DWORD cbInBuffer; - LPVOID lpvOutBuffer; - DWORD cbOutBuffer; -} DIEFFESCAPE, *LPDIEFFESCAPE; - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputEffect - -DECLARE_INTERFACE_(IDirectInputEffect, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputEffect methods ***/ - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; - STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE; - STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE; - STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; - STDMETHOD(Download)(THIS) PURE; - STDMETHOD(Unload)(THIS) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; -}; - -typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) -#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) -#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) -#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) -#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#else -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputEffect_AddRef(p) (p)->AddRef() -#define IDirectInputEffect_Release(p) (p)->Release() -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) -#define IDirectInputEffect_Stop(p) (p)->Stop() -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) -#define IDirectInputEffect_Download(p) (p)->Download() -#define IDirectInputEffect_Unload(p) (p)->Unload() -#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -/**************************************************************************** - * - * IDirectInputDevice - * - ****************************************************************************/ - -#if DIRECTINPUT_VERSION <= 0x700 -#define DIDEVTYPE_DEVICE 1 -#define DIDEVTYPE_MOUSE 2 -#define DIDEVTYPE_KEYBOARD 3 -#define DIDEVTYPE_JOYSTICK 4 - -#else -#define DI8DEVCLASS_ALL 0 -#define DI8DEVCLASS_DEVICE 1 -#define DI8DEVCLASS_POINTER 2 -#define DI8DEVCLASS_KEYBOARD 3 -#define DI8DEVCLASS_GAMECTRL 4 - -#define DI8DEVTYPE_DEVICE 0x11 -#define DI8DEVTYPE_MOUSE 0x12 -#define DI8DEVTYPE_KEYBOARD 0x13 -#define DI8DEVTYPE_JOYSTICK 0x14 -#define DI8DEVTYPE_GAMEPAD 0x15 -#define DI8DEVTYPE_DRIVING 0x16 -#define DI8DEVTYPE_FLIGHT 0x17 -#define DI8DEVTYPE_1STPERSON 0x18 -#define DI8DEVTYPE_DEVICECTRL 0x19 -#define DI8DEVTYPE_SCREENPOINTER 0x1A -#define DI8DEVTYPE_REMOTE 0x1B -#define DI8DEVTYPE_SUPPLEMENTAL 0x1C -#endif /* DIRECTINPUT_VERSION <= 0x700 */ - -#define DIDEVTYPE_HID 0x00010000 - -#if DIRECTINPUT_VERSION <= 0x700 -#define DIDEVTYPEMOUSE_UNKNOWN 1 -#define DIDEVTYPEMOUSE_TRADITIONAL 2 -#define DIDEVTYPEMOUSE_FINGERSTICK 3 -#define DIDEVTYPEMOUSE_TOUCHPAD 4 -#define DIDEVTYPEMOUSE_TRACKBALL 5 - -#define DIDEVTYPEKEYBOARD_UNKNOWN 0 -#define DIDEVTYPEKEYBOARD_PCXT 1 -#define DIDEVTYPEKEYBOARD_OLIVETTI 2 -#define DIDEVTYPEKEYBOARD_PCAT 3 -#define DIDEVTYPEKEYBOARD_PCENH 4 -#define DIDEVTYPEKEYBOARD_NOKIA1050 5 -#define DIDEVTYPEKEYBOARD_NOKIA9140 6 -#define DIDEVTYPEKEYBOARD_NEC98 7 -#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DIDEVTYPEKEYBOARD_NEC98106 9 -#define DIDEVTYPEKEYBOARD_JAPAN106 10 -#define DIDEVTYPEKEYBOARD_JAPANAX 11 -#define DIDEVTYPEKEYBOARD_J3100 12 - -#define DIDEVTYPEJOYSTICK_UNKNOWN 1 -#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 -#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 -#define DIDEVTYPEJOYSTICK_GAMEPAD 4 -#define DIDEVTYPEJOYSTICK_RUDDER 5 -#define DIDEVTYPEJOYSTICK_WHEEL 6 -#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 - -#else -#define DI8DEVTYPEMOUSE_UNKNOWN 1 -#define DI8DEVTYPEMOUSE_TRADITIONAL 2 -#define DI8DEVTYPEMOUSE_FINGERSTICK 3 -#define DI8DEVTYPEMOUSE_TOUCHPAD 4 -#define DI8DEVTYPEMOUSE_TRACKBALL 5 -#define DI8DEVTYPEMOUSE_ABSOLUTE 6 - -#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 -#define DI8DEVTYPEKEYBOARD_PCXT 1 -#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 -#define DI8DEVTYPEKEYBOARD_PCAT 3 -#define DI8DEVTYPEKEYBOARD_PCENH 4 -#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 -#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 -#define DI8DEVTYPEKEYBOARD_NEC98 7 -#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DI8DEVTYPEKEYBOARD_NEC98106 9 -#define DI8DEVTYPEKEYBOARD_JAPAN106 10 -#define DI8DEVTYPEKEYBOARD_JAPANAX 11 -#define DI8DEVTYPEKEYBOARD_J3100 12 - -#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 - -#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEJOYSTICK_STANDARD 2 - -#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEGAMEPAD_STANDARD 2 -#define DI8DEVTYPEGAMEPAD_TILT 3 - -#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 -#define DI8DEVTYPEDRIVING_DUALPEDALS 3 -#define DI8DEVTYPEDRIVING_THREEPEDALS 4 -#define DI8DEVTYPEDRIVING_HANDHELD 5 - -#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEFLIGHT_STICK 2 -#define DI8DEVTYPEFLIGHT_YOKE 3 -#define DI8DEVTYPEFLIGHT_RC 4 - -#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPE1STPERSON_UNKNOWN 2 -#define DI8DEVTYPE1STPERSON_SIXDOF 3 -#define DI8DEVTYPE1STPERSON_SHOOTER 4 - -#define DI8DEVTYPESCREENPTR_UNKNOWN 2 -#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 -#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 -#define DI8DEVTYPESCREENPTR_TOUCH 5 - -#define DI8DEVTYPEREMOTE_UNKNOWN 2 - -#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 - -#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 -#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 -#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 -#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 -#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 -#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 -#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 -#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 -#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 -#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 -#endif /* DIRECTINPUT_VERSION <= 0x700 */ - -#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) -#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* This structure is defined for DirectX 3.0 compatibility */ -typedef struct DIDEVCAPS_DX3 { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVCAPS { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFSamplePeriod; - DWORD dwFFMinTimeResolution; - DWORD dwFirmwareRevision; - DWORD dwHardwareRevision; - DWORD dwFFDriverVersion; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVCAPS, *LPDIDEVCAPS; - -#define DIDC_ATTACHED 0x00000001 -#define DIDC_POLLEDDEVICE 0x00000002 -#define DIDC_EMULATED 0x00000004 -#define DIDC_POLLEDDATAFORMAT 0x00000008 -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIDC_FORCEFEEDBACK 0x00000100 -#define DIDC_FFATTACK 0x00000200 -#define DIDC_FFFADE 0x00000400 -#define DIDC_SATURATION 0x00000800 -#define DIDC_POSNEGCOEFFICIENTS 0x00001000 -#define DIDC_POSNEGSATURATION 0x00002000 -#define DIDC_DEADBAND 0x00004000 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#define DIDC_STARTDELAY 0x00008000 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDC_ALIAS 0x00010000 -#define DIDC_PHANTOM 0x00020000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIDC_HIDDEN 0x00040000 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#define DIDFT_ALL 0x00000000 - -#define DIDFT_RELAXIS 0x00000001 -#define DIDFT_ABSAXIS 0x00000002 -#define DIDFT_AXIS 0x00000003 - -#define DIDFT_PSHBUTTON 0x00000004 -#define DIDFT_TGLBUTTON 0x00000008 -#define DIDFT_BUTTON 0x0000000C - -#define DIDFT_POV 0x00000010 -#define DIDFT_COLLECTION 0x00000040 -#define DIDFT_NODATA 0x00000080 - -#define DIDFT_ANYINSTANCE 0x00FFFF00 -#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE -#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) -#define DIDFT_GETTYPE(n) LOBYTE(n) -#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) -#define DIDFT_FFACTUATOR 0x01000000 -#define DIDFT_FFEFFECTTRIGGER 0x02000000 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDFT_OUTPUT 0x10000000 -#define DIDFT_VENDORDEFINED 0x04000000 -#define DIDFT_ALIAS 0x08000000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#ifndef DIDFT_OPTIONAL -#define DIDFT_OPTIONAL 0x80000000 -#endif - -#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) -#define DIDFT_NOCOLLECTION 0x00FFFF00 - -#ifndef DIJ_RINGZERO - -typedef struct _DIOBJECTDATAFORMAT { - const GUID *pguid; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; -} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; -typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; - -typedef struct _DIDATAFORMAT { - DWORD dwSize; - DWORD dwObjSize; - DWORD dwFlags; - DWORD dwDataSize; - DWORD dwNumObjs; - LPDIOBJECTDATAFORMAT rgodf; -} DIDATAFORMAT, *LPDIDATAFORMAT; -typedef const DIDATAFORMAT *LPCDIDATAFORMAT; - -#define DIDF_ABSAXIS 0x00000001 -#define DIDF_RELAXIS 0x00000002 - -#ifdef __cplusplus -extern "C" { -#endif -extern const DIDATAFORMAT c_dfDIMouse; - -#if(DIRECTINPUT_VERSION >= 0x0700) -extern const DIDATAFORMAT c_dfDIMouse2; -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -extern const DIDATAFORMAT c_dfDIKeyboard; - -#if(DIRECTINPUT_VERSION >= 0x0500) -extern const DIDATAFORMAT c_dfDIJoystick; -extern const DIDATAFORMAT c_dfDIJoystick2; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -#ifdef __cplusplus -}; -#endif - - -#if DIRECTINPUT_VERSION > 0x0700 - -typedef struct _DIACTIONA { - UINT_PTR uAppData; - DWORD dwSemantic; - OPTIONAL DWORD dwFlags; - OPTIONAL union { - LPCSTR lptszActionName; - UINT uResIdString; - }; - OPTIONAL GUID guidInstance; - OPTIONAL DWORD dwObjID; - OPTIONAL DWORD dwHow; -} DIACTIONA, *LPDIACTIONA ; -typedef struct _DIACTIONW { - UINT_PTR uAppData; - DWORD dwSemantic; - OPTIONAL DWORD dwFlags; - OPTIONAL union { - LPCWSTR lptszActionName; - UINT uResIdString; - }; - OPTIONAL GUID guidInstance; - OPTIONAL DWORD dwObjID; - OPTIONAL DWORD dwHow; -} DIACTIONW, *LPDIACTIONW ; -#ifdef UNICODE -typedef DIACTIONW DIACTION; -typedef LPDIACTIONW LPDIACTION; -#else -typedef DIACTIONA DIACTION; -typedef LPDIACTIONA LPDIACTION; -#endif // UNICODE - -typedef const DIACTIONA *LPCDIACTIONA; -typedef const DIACTIONW *LPCDIACTIONW; -#ifdef UNICODE -typedef DIACTIONW DIACTION; -typedef LPCDIACTIONW LPCDIACTION; -#else -typedef DIACTIONA DIACTION; -typedef LPCDIACTIONA LPCDIACTION; -#endif // UNICODE -typedef const DIACTION *LPCDIACTION; - - -#define DIA_FORCEFEEDBACK 0x00000001 -#define DIA_APPMAPPED 0x00000002 -#define DIA_APPNOMAP 0x00000004 -#define DIA_NORANGE 0x00000008 -#define DIA_APPFIXED 0x00000010 - -#define DIAH_UNMAPPED 0x00000000 -#define DIAH_USERCONFIG 0x00000001 -#define DIAH_APPREQUESTED 0x00000002 -#define DIAH_HWAPP 0x00000004 -#define DIAH_HWDEFAULT 0x00000008 -#define DIAH_DEFAULT 0x00000020 -#define DIAH_ERROR 0x80000000 - -typedef struct _DIACTIONFORMATA { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONA rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - OPTIONAL LONG lAxisMin; - OPTIONAL LONG lAxisMax; - OPTIONAL HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - CHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATA, *LPDIACTIONFORMATA; -typedef struct _DIACTIONFORMATW { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONW rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - OPTIONAL LONG lAxisMin; - OPTIONAL LONG lAxisMax; - OPTIONAL HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - WCHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATW, *LPDIACTIONFORMATW; -#ifdef UNICODE -typedef DIACTIONFORMATW DIACTIONFORMAT; -typedef LPDIACTIONFORMATW LPDIACTIONFORMAT; -#else -typedef DIACTIONFORMATA DIACTIONFORMAT; -typedef LPDIACTIONFORMATA LPDIACTIONFORMAT; -#endif // UNICODE -typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; -typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; -#ifdef UNICODE -typedef DIACTIONFORMATW DIACTIONFORMAT; -typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT; -#else -typedef DIACTIONFORMATA DIACTIONFORMAT; -typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT; -#endif // UNICODE -typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT; - -#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF -#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF -#define DIAFTS_UNUSEDDEVICELOW 0x00000000 -#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 - -#define DIDBAM_DEFAULT 0x00000000 -#define DIDBAM_PRESERVE 0x00000001 -#define DIDBAM_INITIALIZE 0x00000002 -#define DIDBAM_HWDEFAULTS 0x00000004 - -#define DIDSAM_DEFAULT 0x00000000 -#define DIDSAM_NOUSER 0x00000001 -#define DIDSAM_FORCESAVE 0x00000002 - -#define DICD_DEFAULT 0x00000000 -#define DICD_EDIT 0x00000001 - -/* - * The following definition is normally defined in d3dtypes.h - */ -#ifndef D3DCOLOR_DEFINED -typedef DWORD D3DCOLOR; -#define D3DCOLOR_DEFINED -#endif - -typedef struct _DICOLORSET{ - DWORD dwSize; - D3DCOLOR cTextFore; - D3DCOLOR cTextHighlight; - D3DCOLOR cCalloutLine; - D3DCOLOR cCalloutHighlight; - D3DCOLOR cBorder; - D3DCOLOR cControlFill; - D3DCOLOR cHighlightFill; - D3DCOLOR cAreaFill; -} DICOLORSET, *LPDICOLORSET; -typedef const DICOLORSET *LPCDICOLORSET; - - -typedef struct _DICONFIGUREDEVICESPARAMSA{ - DWORD dwSize; - DWORD dwcUsers; - LPSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATA lprgFormats; - HWND hwnd; - DICOLORSET dics; - IUnknown FAR * lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; -typedef struct _DICONFIGUREDEVICESPARAMSW{ - DWORD dwSize; - DWORD dwcUsers; - LPWSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATW lprgFormats; - HWND hwnd; - DICOLORSET dics; - IUnknown FAR * lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; -#ifdef UNICODE -typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; -typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS; -#else -typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; -typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS; -#endif // UNICODE -typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; -typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; -#ifdef UNICODE -typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; -typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS; -#else -typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; -typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS; -#endif // UNICODE -typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS; - - -#define DIDIFT_CONFIGURATION 0x00000001 -#define DIDIFT_OVERLAY 0x00000002 - -#define DIDAL_CENTERED 0x00000000 -#define DIDAL_LEFTALIGNED 0x00000001 -#define DIDAL_RIGHTALIGNED 0x00000002 -#define DIDAL_MIDDLE 0x00000000 -#define DIDAL_TOPALIGNED 0x00000004 -#define DIDAL_BOTTOMALIGNED 0x00000008 - -typedef struct _DIDEVICEIMAGEINFOA { - CHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - // These are valid if DIDIFT_OVERLAY is present in dwFlags. - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; -typedef struct _DIDEVICEIMAGEINFOW { - WCHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - // These are valid if DIDIFT_OVERLAY is present in dwFlags. - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; -typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO; -#else -typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; -typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; -typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; -typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO; -#else -typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; -typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO; - -typedef struct _DIDEVICEIMAGEINFOHEADERA { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOA lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; -typedef struct _DIDEVICEIMAGEINFOHEADERW { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOW lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; -typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER; -#else -typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; -typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; -typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; -typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER; -#else -typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; -typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER; - -#endif /* DIRECTINPUT_VERSION > 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* These structures are defined for DirectX 3.0 compatibility */ - -typedef struct DIDEVICEOBJECTINSTANCE_DX3A { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; -typedef struct DIDEVICEOBJECTINSTANCE_DX3W { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; -#ifdef UNICODE -typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3; -typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3; -#else -typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3; -typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3; -#endif // UNICODE -typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; -typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; -typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVICEOBJECTINSTANCEA { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReportId; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; -typedef struct DIDEVICEOBJECTINSTANCEW { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReportId; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE; -typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE; -#else -typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE; -typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE; -#endif // UNICODE -typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; -typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; -typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE; - -typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW -#else -#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA -#endif // !UNICODE - -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIDOI_FFACTUATOR 0x00000001 -#define DIDOI_FFEFFECTTRIGGER 0x00000002 -#define DIDOI_POLLED 0x00008000 -#define DIDOI_ASPECTPOSITION 0x00000100 -#define DIDOI_ASPECTVELOCITY 0x00000200 -#define DIDOI_ASPECTACCEL 0x00000300 -#define DIDOI_ASPECTFORCE 0x00000400 -#define DIDOI_ASPECTMASK 0x00000F00 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDOI_GUIDISUSAGE 0x00010000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -typedef struct DIPROPHEADER { - DWORD dwSize; - DWORD dwHeaderSize; - DWORD dwObj; - DWORD dwHow; -} DIPROPHEADER, *LPDIPROPHEADER; -typedef const DIPROPHEADER *LPCDIPROPHEADER; - -#define DIPH_DEVICE 0 -#define DIPH_BYOFFSET 1 -#define DIPH_BYID 2 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIPH_BYUSAGE 3 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIMAKEUSAGEDWORD(UsagePage, Usage) \ - (DWORD)MAKELONG(Usage, UsagePage) -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -typedef struct DIPROPDWORD { - DIPROPHEADER diph; - DWORD dwData; -} DIPROPDWORD, *LPDIPROPDWORD; -typedef const DIPROPDWORD *LPCDIPROPDWORD; - -#if(DIRECTINPUT_VERSION >= 0x0800) -typedef struct DIPROPPOINTER { - DIPROPHEADER diph; - UINT_PTR uData; -} DIPROPPOINTER, *LPDIPROPPOINTER; -typedef const DIPROPPOINTER *LPCDIPROPPOINTER; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -typedef struct DIPROPRANGE { - DIPROPHEADER diph; - LONG lMin; - LONG lMax; -} DIPROPRANGE, *LPDIPROPRANGE; -typedef const DIPROPRANGE *LPCDIPROPRANGE; - -#define DIPROPRANGE_NOMIN ((LONG)0x80000000) -#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) - -#if(DIRECTINPUT_VERSION >= 0x050a) -typedef struct DIPROPCAL { - DIPROPHEADER diph; - LONG lMin; - LONG lCenter; - LONG lMax; -} DIPROPCAL, *LPDIPROPCAL; -typedef const DIPROPCAL *LPCDIPROPCAL; - -typedef struct DIPROPCALPOV { - DIPROPHEADER diph; - LONG lMin[5]; - LONG lMax[5]; -} DIPROPCALPOV, *LPDIPROPCALPOV; -typedef const DIPROPCALPOV *LPCDIPROPCALPOV; - -typedef struct DIPROPGUIDANDPATH { - DIPROPHEADER diph; - GUID guidClass; - WCHAR wszPath[MAX_PATH]; -} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; -typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; - -typedef struct DIPROPSTRING { - DIPROPHEADER diph; - WCHAR wsz[MAX_PATH]; -} DIPROPSTRING, *LPDIPROPSTRING; -typedef const DIPROPSTRING *LPCDIPROPSTRING; - -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define MAXCPOINTSNUM 8 - -typedef struct _CPOINT -{ - LONG lP; // raw value - DWORD dwLog; // logical_value / max_logical_value * 10000 -} CPOINT, *PCPOINT; - -typedef struct DIPROPCPOINTS { - DIPROPHEADER diph; - DWORD dwCPointsNum; - CPOINT cp[MAXCPOINTSNUM]; -} DIPROPCPOINTS, *LPDIPROPCPOINTS; -typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -#ifdef __cplusplus -#define MAKEDIPROP(prop) (*(const GUID *)(prop)) -#else -#define MAKEDIPROP(prop) ((REFGUID)(prop)) -#endif - -#define DIPROP_BUFFERSIZE MAKEDIPROP(1) - -#define DIPROP_AXISMODE MAKEDIPROP(2) - -#define DIPROPAXISMODE_ABS 0 -#define DIPROPAXISMODE_REL 1 - -#define DIPROP_GRANULARITY MAKEDIPROP(3) - -#define DIPROP_RANGE MAKEDIPROP(4) - -#define DIPROP_DEADZONE MAKEDIPROP(5) - -#define DIPROP_SATURATION MAKEDIPROP(6) - -#define DIPROP_FFGAIN MAKEDIPROP(7) - -#define DIPROP_FFLOAD MAKEDIPROP(8) - -#define DIPROP_AUTOCENTER MAKEDIPROP(9) - -#define DIPROPAUTOCENTER_OFF 0 -#define DIPROPAUTOCENTER_ON 1 - -#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) - -#define DIPROPCALIBRATIONMODE_COOKED 0 -#define DIPROPCALIBRATIONMODE_RAW 1 - -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIPROP_CALIBRATION MAKEDIPROP(11) - -#define DIPROP_GUIDANDPATH MAKEDIPROP(12) - -#define DIPROP_INSTANCENAME MAKEDIPROP(13) - -#define DIPROP_PRODUCTNAME MAKEDIPROP(14) -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x05b2) -#define DIPROP_JOYSTICKID MAKEDIPROP(15) - -#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) - -#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ - -#if(DIRECTINPUT_VERSION >= 0x0700) -#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) - -#define DIPROP_LOGICALRANGE MAKEDIPROP(19) -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIPROP_KEYNAME MAKEDIPROP(20) - -#define DIPROP_CPOINTS MAKEDIPROP(21) - -#define DIPROP_APPDATA MAKEDIPROP(22) - -#define DIPROP_SCANCODE MAKEDIPROP(23) - -#define DIPROP_VIDPID MAKEDIPROP(24) - -#define DIPROP_USERNAME MAKEDIPROP(25) - -#define DIPROP_TYPENAME MAKEDIPROP(26) -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -typedef struct DIDEVICEOBJECTDATA_DX3 { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -} DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3; -typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX; - -typedef struct DIDEVICEOBJECTDATA { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -#if(DIRECTINPUT_VERSION >= 0x0800) - UINT_PTR uAppData; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ -} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; -typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; - -#define DIGDD_PEEK 0x00000001 - -#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \ - ((int)((dwSequence1) - (dwSequence2)) cmp 0) -#define DISCL_EXCLUSIVE 0x00000001 -#define DISCL_NONEXCLUSIVE 0x00000002 -#define DISCL_FOREGROUND 0x00000004 -#define DISCL_BACKGROUND 0x00000008 -#define DISCL_NOWINKEY 0x00000010 - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* These structures are defined for DirectX 3.0 compatibility */ - -typedef struct DIDEVICEINSTANCE_DX3A { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; -typedef struct DIDEVICEINSTANCE_DX3W { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; -#ifdef UNICODE -typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3; -typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3; -#else -typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3; -typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3; -#endif // UNICODE -typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; -typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; -typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVICEINSTANCEA { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; -typedef struct DIDEVICEINSTANCEW { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; -typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE; -#else -typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; -typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE; -#endif // UNICODE - -typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; -typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; -typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE; -#else -typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; -typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE; -#endif // UNICODE -typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE; - -#undef INTERFACE -#define INTERFACE IDirectInputDeviceW - -DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; -}; - -typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; - -#undef INTERFACE -#define INTERFACE IDirectInputDeviceA - -DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; -}; - -typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; - -#ifdef UNICODE -#define IID_IDirectInputDevice IID_IDirectInputDeviceW -#define IDirectInputDevice IDirectInputDeviceW -#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl -#else -#define IID_IDirectInputDevice IID_IDirectInputDeviceA -#define IDirectInputDevice IDirectInputDeviceA -#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl -#endif -typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#else -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice_AddRef(p) (p)->AddRef() -#define IDirectInputDevice_Release(p) (p)->Release() -#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice_Acquire(p) (p)->Acquire() -#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#endif - -#endif /* DIJ_RINGZERO */ - - -#if(DIRECTINPUT_VERSION >= 0x0500) - -#define DISFFC_RESET 0x00000001 -#define DISFFC_STOPALL 0x00000002 -#define DISFFC_PAUSE 0x00000004 -#define DISFFC_CONTINUE 0x00000008 -#define DISFFC_SETACTUATORSON 0x00000010 -#define DISFFC_SETACTUATORSOFF 0x00000020 - -#define DIGFFS_EMPTY 0x00000001 -#define DIGFFS_STOPPED 0x00000002 -#define DIGFFS_PAUSED 0x00000004 -#define DIGFFS_ACTUATORSON 0x00000010 -#define DIGFFS_ACTUATORSOFF 0x00000020 -#define DIGFFS_POWERON 0x00000040 -#define DIGFFS_POWEROFF 0x00000080 -#define DIGFFS_SAFETYSWITCHON 0x00000100 -#define DIGFFS_SAFETYSWITCHOFF 0x00000200 -#define DIGFFS_USERFFSWITCHON 0x00000400 -#define DIGFFS_USERFFSWITCHOFF 0x00000800 -#define DIGFFS_DEVICELOST 0x80000000 - -#ifndef DIJ_RINGZERO - -typedef struct DIEFFECTINFOA { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - CHAR tszName[MAX_PATH]; -} DIEFFECTINFOA, *LPDIEFFECTINFOA; -typedef struct DIEFFECTINFOW { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - WCHAR tszName[MAX_PATH]; -} DIEFFECTINFOW, *LPDIEFFECTINFOW; -#ifdef UNICODE -typedef DIEFFECTINFOW DIEFFECTINFO; -typedef LPDIEFFECTINFOW LPDIEFFECTINFO; -#else -typedef DIEFFECTINFOA DIEFFECTINFO; -typedef LPDIEFFECTINFOA LPDIEFFECTINFO; -#endif // UNICODE -typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; -typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; -typedef const DIEFFECTINFO *LPCDIEFFECTINFO; - -#define DISDD_CONTINUE 0x00000001 - -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); -#ifdef UNICODE -#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW -#else -#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA -#endif // !UNICODE -typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); - -#undef INTERFACE -#define INTERFACE IDirectInputDevice2W - -DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; -}; - -typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice2A - -DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; -}; - -typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; - -#ifdef UNICODE -#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W -#define IDirectInputDevice2 IDirectInputDevice2W -#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl -#else -#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A -#define IDirectInputDevice2 IDirectInputDevice2A -#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl -#endif -typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#else -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice2_AddRef(p) (p)->AddRef() -#define IDirectInputDevice2_Release(p) (p)->Release() -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice2_Acquire(p) (p)->Acquire() -#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice2_Poll(p) (p)->Poll() -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -#if(DIRECTINPUT_VERSION >= 0x0700) -#define DIFEF_DEFAULT 0x00000000 -#define DIFEF_INCLUDENONSTANDARD 0x00000001 -#define DIFEF_MODIFYIFNEEDED 0x00000010 - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputDevice7W - -DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - - /*** IDirectInputDevice7W methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; -}; - -typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice7A - -DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - - /*** IDirectInputDevice7A methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; -}; - -typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; - -#ifdef UNICODE -#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W -#define IDirectInputDevice7 IDirectInputDevice7W -#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl -#else -#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A -#define IDirectInputDevice7 IDirectInputDevice7A -#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl -#endif -typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -#else -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice7_AddRef(p) (p)->AddRef() -#define IDirectInputDevice7_Release(p) (p)->Release() -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice7_Acquire(p) (p)->Acquire() -#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice7_Poll(p) (p)->Poll() -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputDevice8W - -DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice8W methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE; -}; - -typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice8A - -DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice8A methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE; -}; - -typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; - -#ifdef UNICODE -#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W -#define IDirectInputDevice8 IDirectInputDevice8W -#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl -#else -#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A -#define IDirectInputDevice8 IDirectInputDevice8A -#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl -#endif -typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) -#else -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice8_AddRef(p) (p)->AddRef() -#define IDirectInputDevice8_Release(p) (p)->Release() -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice8_Acquire(p) (p)->Acquire() -#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice8_Poll(p) (p)->Poll() -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -/**************************************************************************** - * - * Mouse - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -typedef struct _DIMOUSESTATE { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[4]; -} DIMOUSESTATE, *LPDIMOUSESTATE; - -#if DIRECTINPUT_VERSION >= 0x0700 -typedef struct _DIMOUSESTATE2 { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[8]; -} DIMOUSESTATE2, *LPDIMOUSESTATE2; -#endif - - -#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) -#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) -#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) -#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) -#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) -#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) -#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) -#if (DIRECTINPUT_VERSION >= 0x0700) -#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) -#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) -#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) -#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) -#endif -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Keyboard - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -/**************************************************************************** - * - * DirectInput keyboard scan codes - * - ****************************************************************************/ -#define DIK_ESCAPE 0x01 -#define DIK_1 0x02 -#define DIK_2 0x03 -#define DIK_3 0x04 -#define DIK_4 0x05 -#define DIK_5 0x06 -#define DIK_6 0x07 -#define DIK_7 0x08 -#define DIK_8 0x09 -#define DIK_9 0x0A -#define DIK_0 0x0B -#define DIK_MINUS 0x0C /* - on main keyboard */ -#define DIK_EQUALS 0x0D -#define DIK_BACK 0x0E /* backspace */ -#define DIK_TAB 0x0F -#define DIK_Q 0x10 -#define DIK_W 0x11 -#define DIK_E 0x12 -#define DIK_R 0x13 -#define DIK_T 0x14 -#define DIK_Y 0x15 -#define DIK_U 0x16 -#define DIK_I 0x17 -#define DIK_O 0x18 -#define DIK_P 0x19 -#define DIK_LBRACKET 0x1A -#define DIK_RBRACKET 0x1B -#define DIK_RETURN 0x1C /* Enter on main keyboard */ -#define DIK_LCONTROL 0x1D -#define DIK_A 0x1E -#define DIK_S 0x1F -#define DIK_D 0x20 -#define DIK_F 0x21 -#define DIK_G 0x22 -#define DIK_H 0x23 -#define DIK_J 0x24 -#define DIK_K 0x25 -#define DIK_L 0x26 -#define DIK_SEMICOLON 0x27 -#define DIK_APOSTROPHE 0x28 -#define DIK_GRAVE 0x29 /* accent grave */ -#define DIK_LSHIFT 0x2A -#define DIK_BACKSLASH 0x2B -#define DIK_Z 0x2C -#define DIK_X 0x2D -#define DIK_C 0x2E -#define DIK_V 0x2F -#define DIK_B 0x30 -#define DIK_N 0x31 -#define DIK_M 0x32 -#define DIK_COMMA 0x33 -#define DIK_PERIOD 0x34 /* . on main keyboard */ -#define DIK_SLASH 0x35 /* / on main keyboard */ -#define DIK_RSHIFT 0x36 -#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ -#define DIK_LMENU 0x38 /* left Alt */ -#define DIK_SPACE 0x39 -#define DIK_CAPITAL 0x3A -#define DIK_F1 0x3B -#define DIK_F2 0x3C -#define DIK_F3 0x3D -#define DIK_F4 0x3E -#define DIK_F5 0x3F -#define DIK_F6 0x40 -#define DIK_F7 0x41 -#define DIK_F8 0x42 -#define DIK_F9 0x43 -#define DIK_F10 0x44 -#define DIK_NUMLOCK 0x45 -#define DIK_SCROLL 0x46 /* Scroll Lock */ -#define DIK_NUMPAD7 0x47 -#define DIK_NUMPAD8 0x48 -#define DIK_NUMPAD9 0x49 -#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ -#define DIK_NUMPAD4 0x4B -#define DIK_NUMPAD5 0x4C -#define DIK_NUMPAD6 0x4D -#define DIK_ADD 0x4E /* + on numeric keypad */ -#define DIK_NUMPAD1 0x4F -#define DIK_NUMPAD2 0x50 -#define DIK_NUMPAD3 0x51 -#define DIK_NUMPAD0 0x52 -#define DIK_DECIMAL 0x53 /* . on numeric keypad */ -#define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ -#define DIK_F11 0x57 -#define DIK_F12 0x58 -#define DIK_F13 0x64 /* (NEC PC98) */ -#define DIK_F14 0x65 /* (NEC PC98) */ -#define DIK_F15 0x66 /* (NEC PC98) */ -#define DIK_KANA 0x70 /* (Japanese keyboard) */ -#define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */ -#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ -#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ -#define DIK_YEN 0x7D /* (Japanese keyboard) */ -#define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */ -#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ -#define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ -#define DIK_AT 0x91 /* (NEC PC98) */ -#define DIK_COLON 0x92 /* (NEC PC98) */ -#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ -#define DIK_KANJI 0x94 /* (Japanese keyboard) */ -#define DIK_STOP 0x95 /* (NEC PC98) */ -#define DIK_AX 0x96 /* (Japan AX) */ -#define DIK_UNLABELED 0x97 /* (J3100) */ -#define DIK_NEXTTRACK 0x99 /* Next Track */ -#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ -#define DIK_RCONTROL 0x9D -#define DIK_MUTE 0xA0 /* Mute */ -#define DIK_CALCULATOR 0xA1 /* Calculator */ -#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ -#define DIK_MEDIASTOP 0xA4 /* Media Stop */ -#define DIK_VOLUMEDOWN 0xAE /* Volume - */ -#define DIK_VOLUMEUP 0xB0 /* Volume + */ -#define DIK_WEBHOME 0xB2 /* Web home */ -#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ -#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ -#define DIK_SYSRQ 0xB7 -#define DIK_RMENU 0xB8 /* right Alt */ -#define DIK_PAUSE 0xC5 /* Pause */ -#define DIK_HOME 0xC7 /* Home on arrow keypad */ -#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ -#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ -#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ -#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ -#define DIK_END 0xCF /* End on arrow keypad */ -#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ -#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ -#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ -#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ -#define DIK_LWIN 0xDB /* Left Windows key */ -#define DIK_RWIN 0xDC /* Right Windows key */ -#define DIK_APPS 0xDD /* AppMenu key */ -#define DIK_POWER 0xDE /* System Power */ -#define DIK_SLEEP 0xDF /* System Sleep */ -#define DIK_WAKE 0xE3 /* System Wake */ -#define DIK_WEBSEARCH 0xE5 /* Web Search */ -#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ -#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ -#define DIK_WEBSTOP 0xE8 /* Web Stop */ -#define DIK_WEBFORWARD 0xE9 /* Web Forward */ -#define DIK_WEBBACK 0xEA /* Web Back */ -#define DIK_MYCOMPUTER 0xEB /* My Computer */ -#define DIK_MAIL 0xEC /* Mail */ -#define DIK_MEDIASELECT 0xED /* Media Select */ - -/* - * Alternate names for keys, to facilitate transition from DOS. - */ -#define DIK_BACKSPACE DIK_BACK /* backspace */ -#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ -#define DIK_LALT DIK_LMENU /* left Alt */ -#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ -#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ -#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ -#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ -#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ -#define DIK_RALT DIK_RMENU /* right Alt */ -#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ -#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ -#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ -#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ -#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ -#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ - -/* - * Alternate names for keys originally not used on US keyboards. - */ -#define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */ - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Joystick - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -typedef struct DIJOYSTATE { - LONG lX; /* x-axis position */ - LONG lY; /* y-axis position */ - LONG lZ; /* z-axis position */ - LONG lRx; /* x-axis rotation */ - LONG lRy; /* y-axis rotation */ - LONG lRz; /* z-axis rotation */ - LONG rglSlider[2]; /* extra axes positions */ - DWORD rgdwPOV[4]; /* POV directions */ - BYTE rgbButtons[32]; /* 32 buttons */ -} DIJOYSTATE, *LPDIJOYSTATE; - -typedef struct DIJOYSTATE2 { - LONG lX; /* x-axis position */ - LONG lY; /* y-axis position */ - LONG lZ; /* z-axis position */ - LONG lRx; /* x-axis rotation */ - LONG lRy; /* y-axis rotation */ - LONG lRz; /* z-axis rotation */ - LONG rglSlider[2]; /* extra axes positions */ - DWORD rgdwPOV[4]; /* POV directions */ - BYTE rgbButtons[128]; /* 128 buttons */ - LONG lVX; /* x-axis velocity */ - LONG lVY; /* y-axis velocity */ - LONG lVZ; /* z-axis velocity */ - LONG lVRx; /* x-axis angular velocity */ - LONG lVRy; /* y-axis angular velocity */ - LONG lVRz; /* z-axis angular velocity */ - LONG rglVSlider[2]; /* extra axes velocities */ - LONG lAX; /* x-axis acceleration */ - LONG lAY; /* y-axis acceleration */ - LONG lAZ; /* z-axis acceleration */ - LONG lARx; /* x-axis angular acceleration */ - LONG lARy; /* y-axis angular acceleration */ - LONG lARz; /* z-axis angular acceleration */ - LONG rglASlider[2]; /* extra axes accelerations */ - LONG lFX; /* x-axis force */ - LONG lFY; /* y-axis force */ - LONG lFZ; /* z-axis force */ - LONG lFRx; /* x-axis torque */ - LONG lFRy; /* y-axis torque */ - LONG lFRz; /* z-axis torque */ - LONG rglFSlider[2]; /* extra axes forces */ -} DIJOYSTATE2, *LPDIJOYSTATE2; - -#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) -#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) -#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) -#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) -#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) -#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) -#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ - (n) * sizeof(LONG)) -#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ - (n) * sizeof(DWORD)) -#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) -#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) -#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) -#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) -#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) -#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) -#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) -#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) -#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) -#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) -#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) -#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) -#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) -#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) -#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) -#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) -#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) -#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) -#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) -#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) -#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) -#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) -#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) -#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) -#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) -#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) -#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) -#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) -#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) -#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) -#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) -#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) -#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) - - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * IDirectInput - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -#define DIENUM_STOP 0 -#define DIENUM_CONTINUE 1 - -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW -#else -#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA -#endif // !UNICODE -typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID); - -#define DIEDFL_ALLDEVICES 0x00000000 -#define DIEDFL_ATTACHEDONLY 0x00000001 -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIEDFL_FORCEFEEDBACK 0x00000100 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIEDFL_INCLUDEALIASES 0x00010000 -#define DIEDFL_INCLUDEPHANTOMS 0x00020000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDFL_INCLUDEHIDDEN 0x00040000 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -#if(DIRECTINPUT_VERSION >= 0x0800) -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW -#else -#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA -#endif // !UNICODE -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDBS_MAPPEDPRI1 0x00000001 -#define DIEDBS_MAPPEDPRI2 0x00000002 -#define DIEDBS_RECENTDEVICE 0x00000010 -#define DIEDBS_NEWDEVICE 0x00000020 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDBSFL_ATTACHEDONLY 0x00000000 -#define DIEDBSFL_THISUSER 0x00000010 -#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK -#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 -#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 -#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 -#define DIEDBSFL_VALID 0x00007110 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#undef INTERFACE -#define INTERFACE IDirectInputW - -DECLARE_INTERFACE_(IDirectInputW, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; -}; - -typedef struct IDirectInputW *LPDIRECTINPUTW; - -#undef INTERFACE -#define INTERFACE IDirectInputA - -DECLARE_INTERFACE_(IDirectInputA, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; -}; - -typedef struct IDirectInputA *LPDIRECTINPUTA; - -#ifdef UNICODE -#define IID_IDirectInput IID_IDirectInputW -#define IDirectInput IDirectInputW -#define IDirectInputVtbl IDirectInputWVtbl -#else -#define IID_IDirectInput IID_IDirectInputA -#define IDirectInput IDirectInputA -#define IDirectInputVtbl IDirectInputAVtbl -#endif -typedef struct IDirectInput *LPDIRECTINPUT; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#else -#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput_AddRef(p) (p)->AddRef() -#define IDirectInput_Release(p) (p)->Release() -#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) -#endif - -#undef INTERFACE -#define INTERFACE IDirectInput2W - -DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - - /*** IDirectInput2W methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; -}; - -typedef struct IDirectInput2W *LPDIRECTINPUT2W; - -#undef INTERFACE -#define INTERFACE IDirectInput2A - -DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - - /*** IDirectInput2A methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; -}; - -typedef struct IDirectInput2A *LPDIRECTINPUT2A; - -#ifdef UNICODE -#define IID_IDirectInput2 IID_IDirectInput2W -#define IDirectInput2 IDirectInput2W -#define IDirectInput2Vtbl IDirectInput2WVtbl -#else -#define IID_IDirectInput2 IID_IDirectInput2A -#define IDirectInput2 IDirectInput2A -#define IDirectInput2Vtbl IDirectInput2AVtbl -#endif -typedef struct IDirectInput2 *LPDIRECTINPUT2; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#else -#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput2_AddRef(p) (p)->AddRef() -#define IDirectInput2_Release(p) (p)->Release() -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#endif - - -#undef INTERFACE -#define INTERFACE IDirectInput7W - -DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput2W methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; - - /*** IDirectInput7W methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; -}; - -typedef struct IDirectInput7W *LPDIRECTINPUT7W; - -#undef INTERFACE -#define INTERFACE IDirectInput7A - -DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput2A methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; - - /*** IDirectInput7A methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; -}; - -typedef struct IDirectInput7A *LPDIRECTINPUT7A; - -#ifdef UNICODE -#define IID_IDirectInput7 IID_IDirectInput7W -#define IDirectInput7 IDirectInput7W -#define IDirectInput7Vtbl IDirectInput7WVtbl -#else -#define IID_IDirectInput7 IID_IDirectInput7A -#define IDirectInput7 IDirectInput7A -#define IDirectInput7Vtbl IDirectInput7AVtbl -#endif -typedef struct IDirectInput7 *LPDIRECTINPUT7; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) -#else -#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput7_AddRef(p) (p)->AddRef() -#define IDirectInput7_Release(p) (p)->Release() -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) -#endif - -#if(DIRECTINPUT_VERSION >= 0x0800) -#undef INTERFACE -#define INTERFACE IDirectInput8W - -DECLARE_INTERFACE_(IDirectInput8W, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput8W methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE; -}; - -typedef struct IDirectInput8W *LPDIRECTINPUT8W; - -#undef INTERFACE -#define INTERFACE IDirectInput8A - -DECLARE_INTERFACE_(IDirectInput8A, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput8A methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE; -}; - -typedef struct IDirectInput8A *LPDIRECTINPUT8A; - -#ifdef UNICODE -#define IID_IDirectInput8 IID_IDirectInput8W -#define IDirectInput8 IDirectInput8W -#define IDirectInput8Vtbl IDirectInput8WVtbl -#else -#define IID_IDirectInput8 IID_IDirectInput8A -#define IDirectInput8 IDirectInput8A -#define IDirectInput8Vtbl IDirectInput8AVtbl -#endif -typedef struct IDirectInput8 *LPDIRECTINPUT8; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) -#else -#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput8_AddRef(p) (p)->AddRef() -#define IDirectInput8_Release(p) (p)->Release() -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) -#endif -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if DIRECTINPUT_VERSION > 0x0700 - -extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); - -#else -extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); -extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter); -#ifdef UNICODE -#define DirectInputCreate DirectInputCreateW -#else -#define DirectInputCreate DirectInputCreateA -#endif // !UNICODE - -extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); - -#endif /* DIRECTINPUT_VERSION > 0x700 */ - -#endif /* DIJ_RINGZERO */ - - -/**************************************************************************** - * - * Return Codes - * - ****************************************************************************/ - -/* - * The operation completed successfully. - */ -#define DI_OK S_OK - -/* - * The device exists but is not currently attached. - */ -#define DI_NOTATTACHED S_FALSE - -/* - * The device buffer overflowed. Some input was lost. - */ -#define DI_BUFFEROVERFLOW S_FALSE - -/* - * The change in device properties had no effect. - */ -#define DI_PROPNOEFFECT S_FALSE - -/* - * The operation had no effect. - */ -#define DI_NOEFFECT S_FALSE - -/* - * The device is a polled device. As a result, device buffering - * will not collect any data and event notifications will not be - * signalled until GetDeviceState is called. - */ -#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but the effect was not - * downloaded because the device is not exclusively acquired - * or because the DIEP_NODOWNLOAD flag was passed. - */ -#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but in order to change - * the parameters, the effect needed to be restarted. - */ -#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but some of them were - * beyond the capabilities of the device and were truncated. - */ -#define DI_TRUNCATED ((HRESULT)0x00000008L) - -/* - * The settings have been successfully applied but could not be - * persisted. - */ -#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) - -/* - * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED. - */ -#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) - -/* - * A SUCCESS code indicating that settings cannot be modified. - */ -#define DI_WRITEPROTECT ((HRESULT)0x00000013L) - -/* - * The application requires a newer version of DirectInput. - */ -#define DIERR_OLDDIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) - -/* - * The application was written for an unsupported prerelease version - * of DirectInput. - */ -#define DIERR_BETADIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) - -/* - * The object could not be created due to an incompatible driver version - * or mismatched or incomplete driver components. - */ -#define DIERR_BADDRIVERVER \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) - -/* - * The device or device instance or effect is not registered with DirectInput. - */ -#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG - -/* - * The requested object does not exist. - */ -#define DIERR_NOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) - -/* - * The requested object does not exist. - */ -#define DIERR_OBJECTNOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) - -/* - * An invalid parameter was passed to the returning function, - * or the object was not in a state that admitted the function - * to be called. - */ -#define DIERR_INVALIDPARAM E_INVALIDARG - -/* - * The specified interface is not supported by the object - */ -#define DIERR_NOINTERFACE E_NOINTERFACE - -/* - * An undetermined error occured inside the DInput subsystem - */ -#define DIERR_GENERIC E_FAIL - -/* - * The DInput subsystem couldn't allocate sufficient memory to complete the - * caller's request. - */ -#define DIERR_OUTOFMEMORY E_OUTOFMEMORY - -/* - * The function called is not supported at this time - */ -#define DIERR_UNSUPPORTED E_NOTIMPL - -/* - * This object has not been initialized - */ -#define DIERR_NOTINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) - -/* - * This object is already initialized - */ -#define DIERR_ALREADYINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) - -/* - * This object does not support aggregation - */ -#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION - -/* - * Another app has a higher priority level, preventing this call from - * succeeding. - */ -#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED - -/* - * Access to the device has been lost. It must be re-acquired. - */ -#define DIERR_INPUTLOST \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) - -/* - * The operation cannot be performed while the device is acquired. - */ -#define DIERR_ACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) - -/* - * The operation cannot be performed unless the device is acquired. - */ -#define DIERR_NOTACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) - -/* - * The specified property cannot be changed. - */ -#define DIERR_READONLY E_ACCESSDENIED - -/* - * The device already has an event notification associated with it. - */ -#define DIERR_HANDLEEXISTS E_ACCESSDENIED - -/* - * Data is not yet available. - */ -#ifndef E_PENDING -#define E_PENDING 0x8000000AL -#endif - -/* - * Unable to IDirectInputJoyConfig_Acquire because the user - * does not have sufficient privileges to change the joystick - * configuration. - */ -#define DIERR_INSUFFICIENTPRIVS 0x80040200L - -/* - * The device is full. - */ -#define DIERR_DEVICEFULL 0x80040201L - -/* - * Not all the requested information fit into the buffer. - */ -#define DIERR_MOREDATA 0x80040202L - -/* - * The effect is not downloaded. - */ -#define DIERR_NOTDOWNLOADED 0x80040203L - -/* - * The device cannot be reinitialized because there are still effects - * attached to it. - */ -#define DIERR_HASEFFECTS 0x80040204L - -/* - * The operation cannot be performed unless the device is acquired - * in DISCL_EXCLUSIVE mode. - */ -#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L - -/* - * The effect could not be downloaded because essential information - * is missing. For example, no axes have been associated with the - * effect, or no type-specific information has been created. - */ -#define DIERR_INCOMPLETEEFFECT 0x80040206L - -/* - * Attempted to read buffered device data from a device that is - * not buffered. - */ -#define DIERR_NOTBUFFERED 0x80040207L - -/* - * An attempt was made to modify parameters of an effect while it is - * playing. Not all hardware devices support altering the parameters - * of an effect while it is playing. - */ -#define DIERR_EFFECTPLAYING 0x80040208L - -/* - * The operation could not be completed because the device is not - * plugged in. - */ -#define DIERR_UNPLUGGED 0x80040209L - -/* - * SendDeviceData failed because more information was requested - * to be sent than can be sent to the device. Some devices have - * restrictions on how much data can be sent to them. (For example, - * there might be a limit on the number of buttons that can be - * pressed at once.) - */ -#define DIERR_REPORTFULL 0x8004020AL - - -/* - * A mapper file function failed because reading or writing the user or IHV - * settings file failed. - */ -#define DIERR_MAPFILEFAIL 0x8004020BL - - -/*--- DINPUT Mapper Definitions: New for Dx8 ---*/ - - -/*--- Keyboard - Physical Keyboard Device ---*/ - -#define DIKEYBOARD_ESCAPE 0x81000401 -#define DIKEYBOARD_1 0x81000402 -#define DIKEYBOARD_2 0x81000403 -#define DIKEYBOARD_3 0x81000404 -#define DIKEYBOARD_4 0x81000405 -#define DIKEYBOARD_5 0x81000406 -#define DIKEYBOARD_6 0x81000407 -#define DIKEYBOARD_7 0x81000408 -#define DIKEYBOARD_8 0x81000409 -#define DIKEYBOARD_9 0x8100040A -#define DIKEYBOARD_0 0x8100040B -#define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */ -#define DIKEYBOARD_EQUALS 0x8100040D -#define DIKEYBOARD_BACK 0x8100040E /* backspace */ -#define DIKEYBOARD_TAB 0x8100040F -#define DIKEYBOARD_Q 0x81000410 -#define DIKEYBOARD_W 0x81000411 -#define DIKEYBOARD_E 0x81000412 -#define DIKEYBOARD_R 0x81000413 -#define DIKEYBOARD_T 0x81000414 -#define DIKEYBOARD_Y 0x81000415 -#define DIKEYBOARD_U 0x81000416 -#define DIKEYBOARD_I 0x81000417 -#define DIKEYBOARD_O 0x81000418 -#define DIKEYBOARD_P 0x81000419 -#define DIKEYBOARD_LBRACKET 0x8100041A -#define DIKEYBOARD_RBRACKET 0x8100041B -#define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */ -#define DIKEYBOARD_LCONTROL 0x8100041D -#define DIKEYBOARD_A 0x8100041E -#define DIKEYBOARD_S 0x8100041F -#define DIKEYBOARD_D 0x81000420 -#define DIKEYBOARD_F 0x81000421 -#define DIKEYBOARD_G 0x81000422 -#define DIKEYBOARD_H 0x81000423 -#define DIKEYBOARD_J 0x81000424 -#define DIKEYBOARD_K 0x81000425 -#define DIKEYBOARD_L 0x81000426 -#define DIKEYBOARD_SEMICOLON 0x81000427 -#define DIKEYBOARD_APOSTROPHE 0x81000428 -#define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */ -#define DIKEYBOARD_LSHIFT 0x8100042A -#define DIKEYBOARD_BACKSLASH 0x8100042B -#define DIKEYBOARD_Z 0x8100042C -#define DIKEYBOARD_X 0x8100042D -#define DIKEYBOARD_C 0x8100042E -#define DIKEYBOARD_V 0x8100042F -#define DIKEYBOARD_B 0x81000430 -#define DIKEYBOARD_N 0x81000431 -#define DIKEYBOARD_M 0x81000432 -#define DIKEYBOARD_COMMA 0x81000433 -#define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */ -#define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */ -#define DIKEYBOARD_RSHIFT 0x81000436 -#define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */ -#define DIKEYBOARD_LMENU 0x81000438 /* left Alt */ -#define DIKEYBOARD_SPACE 0x81000439 -#define DIKEYBOARD_CAPITAL 0x8100043A -#define DIKEYBOARD_F1 0x8100043B -#define DIKEYBOARD_F2 0x8100043C -#define DIKEYBOARD_F3 0x8100043D -#define DIKEYBOARD_F4 0x8100043E -#define DIKEYBOARD_F5 0x8100043F -#define DIKEYBOARD_F6 0x81000440 -#define DIKEYBOARD_F7 0x81000441 -#define DIKEYBOARD_F8 0x81000442 -#define DIKEYBOARD_F9 0x81000443 -#define DIKEYBOARD_F10 0x81000444 -#define DIKEYBOARD_NUMLOCK 0x81000445 -#define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */ -#define DIKEYBOARD_NUMPAD7 0x81000447 -#define DIKEYBOARD_NUMPAD8 0x81000448 -#define DIKEYBOARD_NUMPAD9 0x81000449 -#define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */ -#define DIKEYBOARD_NUMPAD4 0x8100044B -#define DIKEYBOARD_NUMPAD5 0x8100044C -#define DIKEYBOARD_NUMPAD6 0x8100044D -#define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */ -#define DIKEYBOARD_NUMPAD1 0x8100044F -#define DIKEYBOARD_NUMPAD2 0x81000450 -#define DIKEYBOARD_NUMPAD3 0x81000451 -#define DIKEYBOARD_NUMPAD0 0x81000452 -#define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */ -#define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ -#define DIKEYBOARD_F11 0x81000457 -#define DIKEYBOARD_F12 0x81000458 -#define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */ -#define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */ -#define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */ -#define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */ -#define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */ -#define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */ -#define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */ -#define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */ -#define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */ -#define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */ -#define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ -#define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */ -#define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */ -#define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */ -#define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */ -#define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */ -#define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */ -#define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */ -#define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */ -#define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */ -#define DIKEYBOARD_RCONTROL 0x8100049D -#define DIKEYBOARD_MUTE 0x810004A0 /* Mute */ -#define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */ -#define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */ -#define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */ -#define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */ -#define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */ -#define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */ -#define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */ -#define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */ -#define DIKEYBOARD_SYSRQ 0x810004B7 -#define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */ -#define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */ -#define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */ -#define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */ -#define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */ -#define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */ -#define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */ -#define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */ -#define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */ -#define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */ -#define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */ -#define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */ -#define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */ -#define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */ -#define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */ -#define DIKEYBOARD_POWER 0x810004DE /* System Power */ -#define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */ -#define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */ -#define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */ -#define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */ -#define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */ -#define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */ -#define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */ -#define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */ -#define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */ -#define DIKEYBOARD_MAIL 0x810004EC /* Mail */ -#define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */ - - -/*--- MOUSE - Physical Mouse Device ---*/ - -#define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */ -#define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */ -#define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */ -#define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */ -#define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */ -#define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */ -#define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */ -#define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */ -#define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */ -#define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */ -#define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */ -#define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */ -#define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */ - - -/*--- VOICE - Physical Dplay Voice Device ---*/ - -#define DIVOICE_CHANNEL1 0x83000401 -#define DIVOICE_CHANNEL2 0x83000402 -#define DIVOICE_CHANNEL3 0x83000403 -#define DIVOICE_CHANNEL4 0x83000404 -#define DIVOICE_CHANNEL5 0x83000405 -#define DIVOICE_CHANNEL6 0x83000406 -#define DIVOICE_CHANNEL7 0x83000407 -#define DIVOICE_CHANNEL8 0x83000408 -#define DIVOICE_TEAM 0x83000409 -#define DIVOICE_ALL 0x8300040A -#define DIVOICE_RECORDMUTE 0x8300040B -#define DIVOICE_PLAYBACKMUTE 0x8300040C -#define DIVOICE_TRANSMIT 0x8300040D - -#define DIVOICE_VOICECOMMAND 0x83000410 - - -/*--- Driving Simulator - Racing - Vehicle control is primary objective ---*/ -#define DIVIRTUAL_DRIVING_RACE 0x01000000 -#define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */ -#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */ -#define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */ -#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */ -#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */ -#define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */ -#define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */ -#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */ -#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */ -#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */ -#define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */ -#define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */ -#define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */ -#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Combat - Combat from within a vehicle is primary objective ---*/ -#define DIVIRTUAL_DRIVING_COMBAT 0x02000000 -#define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */ -#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */ -#define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */ -#define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */ -#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */ -#define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */ -#define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */ -#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */ -#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */ -#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */ -#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */ -#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */ -#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */ -#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Tank - Combat from withing a tank is primary objective ---*/ -#define DIVIRTUAL_DRIVING_TANK 0x03000000 -#define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */ -#define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */ -#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */ -#define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */ -#define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */ -#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */ -#define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */ -#define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */ -#define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */ -#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */ -#define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */ -#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */ -#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */ -#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */ -#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */ -#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */ -#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */ -#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Civilian - Plane control is the primary objective ---*/ -#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000 -#define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */ -#define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */ -#define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */ -#define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */ -#define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */ -#define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */ -#define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */ -#define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */ -#define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */ -#define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */ -#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */ -#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */ -#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */ -#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Military - Aerial combat is the primary objective ---*/ -#define DIVIRTUAL_FLYING_MILITARY 0x05000000 -#define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */ -#define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */ -#define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */ -#define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */ -#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */ -#define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */ -#define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */ -#define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */ -#define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */ -#define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */ -#define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */ -#define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */ -#define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */ -#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */ -#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */ -#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */ -#define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */ -#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */ -#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Combat Helicopter - Combat from helicopter is primary objective ---*/ -#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000 -#define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */ -#define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */ -#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */ -#define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */ -#define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */ -#define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */ -#define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */ -#define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */ -#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */ -#define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */ -#define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */ -#define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */ -#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */ -#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */ - -/*--- Space Simulator - Combat - Space Simulator with weapons ---*/ -#define DIVIRTUAL_SPACESIM 0x07000000 -#define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */ -#define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */ -#define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */ -#define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */ -#define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */ -#define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */ -#define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */ -#define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */ -#define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */ -#define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */ -#define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */ -#define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */ -#define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */ -#define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */ -#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */ -#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */ -#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */ -#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */ -#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */ -#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */ -#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */ -#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */ -#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */ -#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */ -#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */ -#define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */ - -/*--- Fighting - First Person - Hand to Hand combat is primary objective ---*/ -#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000 -#define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */ -#define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */ -#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */ -#define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */ -#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */ -#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */ -#define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */ -#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */ -#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */ -#define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */ -#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */ -#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */ -#define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */ -#define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */ -#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */ -#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */ -#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */ -#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */ -#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */ -#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */ - -/*--- Fighting - First Person Shooting - Navigation and combat are primary objectives ---*/ -#define DIVIRTUAL_FIGHTING_FPS 0x09000000 -#define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */ -#define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */ -#define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */ -#define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */ -#define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */ -#define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */ -#define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */ -#define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */ -#define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */ -#define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */ -#define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */ -#define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */ -#define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */ -#define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */ -#define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */ -#define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */ -#define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */ -#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */ -#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */ -#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */ -#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */ -#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */ -#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */ -#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */ -#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */ -#define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */ -#define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */ - -/*--- Fighting - Third Person action - Perspective of camera is behind the main character ---*/ -#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000 -#define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */ -#define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */ -#define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */ -#define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */ -#define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */ -#define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */ -#define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */ -#define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */ -#define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */ -#define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */ -#define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */ -#define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */ -#define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */ -#define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */ -#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */ -#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */ -#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */ -#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */ -#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */ -#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */ -#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */ -#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */ -#define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */ -#define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */ - -/*--- Strategy - Role Playing - Navigation and problem solving are primary actions ---*/ -#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000 -#define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */ -#define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */ -#define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */ -#define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */ -#define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */ -#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */ -#define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */ -#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */ -#define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */ -#define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */ -#define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */ -#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */ -#define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */ -#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */ -#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */ -#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */ -#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */ -#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */ -#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */ - -/*--- Strategy - Turn based - Navigation and problem solving are primary actions ---*/ -#define DIVIRTUAL_STRATEGY_TURN 0x0C000000 -#define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */ -#define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */ -#define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */ -#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */ -#define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */ -#define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */ -#define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */ -#define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */ -#define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */ -#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */ -#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */ -#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */ -#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */ -#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hunting - Hunting ---*/ -#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000 -#define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */ -#define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */ -#define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */ -#define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */ -#define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */ -#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */ -#define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */ -#define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */ -#define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */ -#define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */ -#define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */ -#define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */ -#define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */ -#define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */ -#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */ -#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */ -#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */ -#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */ -#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */ -#define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */ -#define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Fishing - Catching Fish is primary objective ---*/ -#define DIVIRTUAL_SPORTS_FISHING 0x0E000000 -#define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */ -#define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */ -#define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */ -#define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */ -#define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */ -#define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */ -#define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */ -#define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */ -#define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */ -#define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */ -#define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */ -#define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */ -#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */ -#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */ -#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */ -#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */ -#define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */ -#define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Batting - Batter control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000 -#define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */ -#define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */ -#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */ -#define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */ -#define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */ -#define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */ -#define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */ -#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */ -#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */ -#define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */ -#define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */ -#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Pitching - Pitcher control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000 -#define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */ -#define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */ -#define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */ -#define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */ -#define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */ -#define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */ -#define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */ -#define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */ -#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Fielding - Fielder control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000 -#define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */ -#define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */ -#define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */ -#define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */ -#define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */ -#define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */ -#define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */ -#define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */ -#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */ -#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */ -#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */ -#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */ - -/*--- Sports - Basketball - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000 -#define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */ -#define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */ -#define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */ -#define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */ -#define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */ -#define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */ -#define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */ -#define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */ -#define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */ -#define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */ -#define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */ -#define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */ -#define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */ -#define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */ -#define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */ -#define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */ -#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */ -#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */ -#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */ -#define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */ -#define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */ - -/*--- Sports - Basketball - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000 -#define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */ -#define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */ -#define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */ -#define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */ -#define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */ -#define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */ -#define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */ -#define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */ -#define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */ -#define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */ -#define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */ -#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */ -#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */ -#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */ -#define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */ -#define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Play - Play selection ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000 -#define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */ -#define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */ -#define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */ -#define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - QB - Offense: Quarterback / Kicker ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000 -#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */ -#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */ -#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */ -#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */ -#define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */ -#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */ -#define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */ -#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */ -#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */ -#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Offense - Offense - Runner ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000 -#define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */ -#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */ -#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */ -#define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */ -#define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */ -#define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */ -#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */ -#define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */ -#define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */ -#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */ -#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */ -#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000 -#define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */ -#define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */ -#define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */ -#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */ -#define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */ -#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */ -#define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */ -#define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */ -#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */ -#define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */ -#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */ -#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */ -#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */ -#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */ - -/*--- Sports - Golf - ---*/ -#define DIVIRTUAL_SPORTS_GOLF 0x18000000 -#define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */ -#define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */ -#define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */ -#define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */ -#define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */ -#define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */ -#define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */ -#define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */ -#define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */ -#define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */ -#define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */ -#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */ -#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */ -#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */ -#define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */ -#define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */ -#define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000 -#define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */ -#define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */ -#define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */ -#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */ -#define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */ -#define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */ -#define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */ -#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */ -#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000 -#define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */ -#define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */ -#define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */ -#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */ -#define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */ -#define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */ -#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */ -#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */ -#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Goalie - Goal tending ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000 -#define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */ -#define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */ -#define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */ -#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */ -#define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */ -#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */ -#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */ -#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Mountain Biking - ---*/ -#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000 -#define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */ -#define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */ -#define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */ -#define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */ -#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */ -#define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */ -#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */ -#define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */ -#define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */ -#define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */ -#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */ -#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */ -#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */ -#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */ -#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */ -#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */ -#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */ - -/*--- Sports: Skiing / Snowboarding / Skateboarding - ---*/ -#define DIVIRTUAL_SPORTS_SKIING 0x1D000000 -#define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */ -#define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */ -#define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */ -#define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */ -#define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */ -#define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */ -#define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */ -#define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */ -#define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */ -#define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */ -#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */ -#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */ -#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */ -#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */ -#define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */ -#define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Soccer - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000 -#define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */ -#define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */ -#define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */ -#define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */ -#define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */ -#define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */ -#define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */ -#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */ -#define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */ -#define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */ -#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */ -#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */ -#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */ -#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */ -#define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */ -#define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */ -#define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */ -#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */ -#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */ -#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */ -#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Soccer - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000 -#define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */ -#define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */ -#define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */ -#define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */ -#define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */ -#define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */ -#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */ -#define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */ -#define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */ -#define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */ -#define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */ -#define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */ -#define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */ -#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */ -#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */ -#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */ -#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */ -#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */ -#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Racquet - Tennis - Table-Tennis - Squash ---*/ -#define DIVIRTUAL_SPORTS_RACQUET 0x20000000 -#define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */ -#define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */ -#define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */ -#define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */ -#define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */ -#define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */ -#define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */ -#define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */ -#define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */ -#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */ -#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */ -#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */ -#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */ -#define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */ -#define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */ - -/*--- Arcade- 2D - Side to Side movement ---*/ -#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000 -#define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */ -#define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */ -#define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */ -#define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */ -#define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */ -#define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */ -#define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */ -#define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */ -#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */ -#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */ -#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */ -#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */ -#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */ -#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */ -#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */ -#define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */ -#define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */ - -/*--- Arcade - Platform Game - Character moves around on screen ---*/ -#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000 -#define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */ -#define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */ -#define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */ -#define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */ -#define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */ -#define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */ -#define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */ -#define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */ -#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */ -#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */ -#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */ -#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */ -#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */ -#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */ -#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */ -#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */ -#define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */ -#define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */ - -/*--- CAD - 2D Object Control - Controls to select and move objects in 2D ---*/ -#define DIVIRTUAL_CAD_2DCONTROL 0x23000000 -#define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */ -#define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */ -#define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */ -#define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */ -#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */ -#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */ -#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */ -#define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */ -#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */ -#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */ -#define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */ -#define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D object control - Controls to select and move objects within a 3D environment ---*/ -#define DIVIRTUAL_CAD_3DCONTROL 0x24000000 -#define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */ -#define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */ -#define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */ -#define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */ -#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */ -#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */ -#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */ -#define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */ -#define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */ -#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */ -#define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */ -#define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D Navigation - Fly through - Controls for 3D modeling ---*/ -#define DIVIRTUAL_CAD_FLYBY 0x25000000 -#define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */ -#define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */ -#define DIAXIS_CADF_INOUT 0x25018203 /* in / out */ -#define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */ -#define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */ -#define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */ -#define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */ -#define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */ -#define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */ -#define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */ -#define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */ -#define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D Model Control - Controls for 3D modeling ---*/ -#define DIVIRTUAL_CAD_MODEL 0x26000000 -#define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */ -#define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */ -#define DIAXIS_CADM_INOUT 0x26018203 /* in / out */ -#define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */ -#define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */ -#define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */ -#define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */ -#define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */ -#define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */ -#define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */ -#define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */ -#define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */ - -/*--- Control - Media Equipment - Remote ---*/ -#define DIVIRTUAL_REMOTE_CONTROL 0x27000000 -#define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */ -#define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */ -#define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */ -#define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */ -#define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */ -#define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */ -#define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */ -#define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */ -#define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */ -#define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */ -#define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */ -#define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */ -#define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */ -#define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */ -#define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */ -#define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */ -#define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */ -#define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */ -#define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */ -#define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */ -#define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */ -#define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */ -#define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */ -#define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */ -#define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */ -#define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */ -#define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */ -#define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */ - -/*--- Control- Web - Help or Browser ---*/ -#define DIVIRTUAL_BROWSER_CONTROL 0x28000000 -#define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */ -#define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */ -#define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */ -#define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */ -#define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */ -#define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */ -#define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */ -#define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */ -#define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */ -#define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */ -#define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */ -#define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */ -#define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */ -#define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */ -#define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Giant Walking Robot - Walking tank with weapons ---*/ -#define DIVIRTUAL_DRIVING_MECHA 0x29000000 -#define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */ -#define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */ -#define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */ -#define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */ -#define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */ -#define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */ -#define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */ -#define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */ -#define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */ -#define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */ -#define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */ -#define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */ -#define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */ -#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */ -#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */ -#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */ -#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */ -#define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */ -#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */ -#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */ -#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */ -#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */ -#define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */ -#define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */ - -/* - * "ANY" semantics can be used as a last resort to get mappings for actions - * that match nothing in the chosen virtual genre. These semantics will be - * mapped at a lower priority that virtual genre semantics. Also, hardware - * vendors will not be able to provide sensible mappings for these unless - * they provide application specific mappings. - */ -#define DIAXIS_ANY_X_1 0xFF00C201 -#define DIAXIS_ANY_X_2 0xFF00C202 -#define DIAXIS_ANY_Y_1 0xFF014201 -#define DIAXIS_ANY_Y_2 0xFF014202 -#define DIAXIS_ANY_Z_1 0xFF01C201 -#define DIAXIS_ANY_Z_2 0xFF01C202 -#define DIAXIS_ANY_R_1 0xFF024201 -#define DIAXIS_ANY_R_2 0xFF024202 -#define DIAXIS_ANY_U_1 0xFF02C201 -#define DIAXIS_ANY_U_2 0xFF02C202 -#define DIAXIS_ANY_V_1 0xFF034201 -#define DIAXIS_ANY_V_2 0xFF034202 -#define DIAXIS_ANY_A_1 0xFF03C201 -#define DIAXIS_ANY_A_2 0xFF03C202 -#define DIAXIS_ANY_B_1 0xFF044201 -#define DIAXIS_ANY_B_2 0xFF044202 -#define DIAXIS_ANY_C_1 0xFF04C201 -#define DIAXIS_ANY_C_2 0xFF04C202 -#define DIAXIS_ANY_S_1 0xFF054201 -#define DIAXIS_ANY_S_2 0xFF054202 - -#define DIAXIS_ANY_1 0xFF004201 -#define DIAXIS_ANY_2 0xFF004202 -#define DIAXIS_ANY_3 0xFF004203 -#define DIAXIS_ANY_4 0xFF004204 - -#define DIPOV_ANY_1 0xFF004601 -#define DIPOV_ANY_2 0xFF004602 -#define DIPOV_ANY_3 0xFF004603 -#define DIPOV_ANY_4 0xFF004604 - -#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance ) - - -#ifdef __cplusplus -}; -#endif - -#endif /* __DINPUT_INCLUDED__ */ - -/**************************************************************************** - * - * Definitions for non-IDirectInput (VJoyD) features defined more recently - * than the current sdk files - * - ****************************************************************************/ - -#ifdef _INC_MMSYSTEM -#ifndef MMNOJOY - -#ifndef __VJOYDX_INCLUDED__ -#define __VJOYDX_INCLUDED__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure - * contains mini-driver specific data to be passed by VJoyD to the mini- - * driver instead of doing a poll. - */ -#define JOY_PASSDRIVERDATA 0x10000000l - -/* - * Informs the joystick driver that the configuration has been changed - * and should be reloaded from the registery. - * dwFlags is reserved and should be set to zero - */ -WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags ); - -#ifndef DIJ_RINGZERO -/* - * Invoke the joystick control panel directly, using the passed window handle - * as the parent of the dialog. This API is only supported for compatibility - * purposes; new applications should use the RunControlPanel method of a - * device interface for a game controller. - * The API is called by using the function pointer returned by - * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned - * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow - * declaration and casting of an appropriately typed variable. - */ -void WINAPI ShowJoyCPL( HWND hWnd ); -typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd ); -#endif /* DIJ_RINGZERO */ - - -/* - * Hardware Setting indicating that the device is a headtracker - */ -#define JOY_HWS_ISHEADTRACKER 0x02000000l - -/* - * Hardware Setting indicating that the VxD is used to replace - * the standard analog polling - */ -#define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l - -/* - * Hardware Setting indicating that the driver needs a standard - * gameport in order to communicate with the device. - */ -#define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l - -/* - * Hardware Setting indicating that VJoyD should not load this - * driver, it will be loaded externally and will register with - * VJoyD of it's own accord. - */ -#define JOY_HWS_AUTOLOAD 0x10000000l - -/* - * Hardware Setting indicating that the driver acquires any - * resources needed without needing a devnode through VJoyD. - */ -#define JOY_HWS_NODEVNODE 0x20000000l - - -/* - * Hardware Setting indicating that the device is a gameport bus - */ -#define JOY_HWS_ISGAMEPORTBUS 0x80000000l -#define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l - -/* - * Usage Setting indicating that the settings are volatile and - * should be removed if still present on a reboot. - */ -#define JOY_US_VOLATILE 0x00000008L - -#ifdef __cplusplus -}; -#endif - -#endif /* __VJOYDX_INCLUDED__ */ - -#endif /* not MMNOJOY */ -#endif /* _INC_MMSYSTEM */ - -/**************************************************************************** - * - * Definitions for non-IDirectInput (VJoyD) features defined more recently - * than the current ddk files - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -#ifdef _INC_MMDDK -#ifndef MMNOJOYDEV - -#ifndef __VJOYDXD_INCLUDED__ -#define __VJOYDXD_INCLUDED__ -/* - * Poll type in which the do_other field of the JOYOEMPOLLDATA - * structure contains mini-driver specific data passed from an app. - */ -#define JOY_OEMPOLL_PASSDRIVERDATA 7 - -#endif /* __VJOYDXD_INCLUDED__ */ - -#endif /* not MMNOJOYDEV */ -#endif /* _INC_MMDDK */ - -#endif /* DIJ_RINGZERO */ - diff --git a/mednafen/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib b/mednafen/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib deleted file mode 100644 index 9c4178c28a114b6eb0bfa23b933b68707b768d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1957750 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 e0DE5K%jn^rkOF0auC@wwj0 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

k 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�g`_SqN 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 z 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 z

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

mq7W_vUXx_vwuNxz5bokQ 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�Bu@2q|5j*h!t9O}maCYJ3m?V!FaXw4E4T0~L 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 diff --git a/mednafen/dx/dsound.h b/mednafen/dx/dsound.h deleted file mode 100644 index c088b63a35..0000000000 --- a/mednafen/dx/dsound.h +++ /dev/null @@ -1,2358 +0,0 @@ -/*==========================================================================; - * - * Copyright (c) Microsoft Corporation. All rights reserved. - * - * File: dsound.h - * Content: DirectSound include file - * - **************************************************************************/ - -#define COM_NO_WINDOWS_H -#include -#include - -#ifndef DIRECTSOUND_VERSION -#define DIRECTSOUND_VERSION 0x0900 /* Version 9.0 */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -#ifndef __DSOUND_INCLUDED__ -#define __DSOUND_INCLUDED__ - -/* Type definitions shared with Direct3D */ - -#ifndef DX_SHARED_DEFINES - -typedef float D3DVALUE, *LPD3DVALUE; - -#ifndef D3DCOLOR_DEFINED -typedef DWORD D3DCOLOR; -#define D3DCOLOR_DEFINED -#endif - -#ifndef LPD3DCOLOR_DEFINED -typedef DWORD *LPD3DCOLOR; -#define LPD3DCOLOR_DEFINED -#endif - -#ifndef D3DVECTOR_DEFINED -typedef struct _D3DVECTOR { - float x; - float y; - float z; -} D3DVECTOR; -#define D3DVECTOR_DEFINED -#endif - -#ifndef LPD3DVECTOR_DEFINED -typedef D3DVECTOR *LPD3DVECTOR; -#define LPD3DVECTOR_DEFINED -#endif - -#define DX_SHARED_DEFINES -#endif // DX_SHARED_DEFINES - -#define _FACDS 0x878 /* DirectSound's facility code */ -#define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) - -// DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} -DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); - -// DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} -DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); - -// DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} -DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -// DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} -DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); - -// DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} -DEFINE_GUID(CLSID_DirectSoundFullDuplex, 0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); - - -// DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultPlayback, 0xdef00000, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultCapture, 0xdef00001, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultVoicePlayback, 0xdef00002, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xdef00003, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - - -// -// Forward declarations for interfaces. -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -// - -#ifdef __cplusplus -struct IDirectSound; -struct IDirectSoundBuffer; -struct IDirectSound3DListener; -struct IDirectSound3DBuffer; -struct IDirectSoundCapture; -struct IDirectSoundCaptureBuffer; -struct IDirectSoundNotify; -#endif // __cplusplus - - -// -// DirectSound 8.0 interfaces. -// - -#if DIRECTSOUND_VERSION >= 0x0800 - -#ifdef __cplusplus -struct IDirectSound8; -struct IDirectSoundBuffer8; -struct IDirectSoundCaptureBuffer8; -struct IDirectSoundFXGargle; -struct IDirectSoundFXChorus; -struct IDirectSoundFXFlanger; -struct IDirectSoundFXEcho; -struct IDirectSoundFXDistortion; -struct IDirectSoundFXCompressor; -struct IDirectSoundFXParamEq; -struct IDirectSoundFXWavesReverb; -struct IDirectSoundFXI3DL2Reverb; -struct IDirectSoundCaptureFXAec; -struct IDirectSoundCaptureFXNoiseSuppress; -struct IDirectSoundFullDuplex; -#endif // __cplusplus - -// IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the -// only DirectSound 7.0 interfaces with changed functionality in version 8.0. -// The other level 8 interfaces as equivalent to their level 7 counterparts: - -#define IDirectSoundCapture8 IDirectSoundCapture -#define IDirectSound3DListener8 IDirectSound3DListener -#define IDirectSound3DBuffer8 IDirectSound3DBuffer -#define IDirectSoundNotify8 IDirectSoundNotify -#define IDirectSoundFXGargle8 IDirectSoundFXGargle -#define IDirectSoundFXChorus8 IDirectSoundFXChorus -#define IDirectSoundFXFlanger8 IDirectSoundFXFlanger -#define IDirectSoundFXEcho8 IDirectSoundFXEcho -#define IDirectSoundFXDistortion8 IDirectSoundFXDistortion -#define IDirectSoundFXCompressor8 IDirectSoundFXCompressor -#define IDirectSoundFXParamEq8 IDirectSoundFXParamEq -#define IDirectSoundFXWavesReverb8 IDirectSoundFXWavesReverb -#define IDirectSoundFXI3DL2Reverb8 IDirectSoundFXI3DL2Reverb -#define IDirectSoundCaptureFXAec8 IDirectSoundCaptureFXAec -#define IDirectSoundCaptureFXNoiseSuppress8 IDirectSoundCaptureFXNoiseSuppress -#define IDirectSoundFullDuplex8 IDirectSoundFullDuplex - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -typedef struct IDirectSound *LPDIRECTSOUND; -typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER; -typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER; -typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER; -typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE; -typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER; -typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY; - - -#if DIRECTSOUND_VERSION >= 0x0800 - -typedef struct IDirectSoundFXGargle *LPDIRECTSOUNDFXGARGLE; -typedef struct IDirectSoundFXChorus *LPDIRECTSOUNDFXCHORUS; -typedef struct IDirectSoundFXFlanger *LPDIRECTSOUNDFXFLANGER; -typedef struct IDirectSoundFXEcho *LPDIRECTSOUNDFXECHO; -typedef struct IDirectSoundFXDistortion *LPDIRECTSOUNDFXDISTORTION; -typedef struct IDirectSoundFXCompressor *LPDIRECTSOUNDFXCOMPRESSOR; -typedef struct IDirectSoundFXParamEq *LPDIRECTSOUNDFXPARAMEQ; -typedef struct IDirectSoundFXWavesReverb *LPDIRECTSOUNDFXWAVESREVERB; -typedef struct IDirectSoundFXI3DL2Reverb *LPDIRECTSOUNDFXI3DL2REVERB; -typedef struct IDirectSoundCaptureFXAec *LPDIRECTSOUNDCAPTUREFXAEC; -typedef struct IDirectSoundCaptureFXNoiseSuppress *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS; -typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; - -typedef struct IDirectSound8 *LPDIRECTSOUND8; -typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8; -typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8; -typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8; -typedef struct IDirectSoundCapture8 *LPDIRECTSOUNDCAPTURE8; -typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8; -typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8; -typedef struct IDirectSoundFXGargle8 *LPDIRECTSOUNDFXGARGLE8; -typedef struct IDirectSoundFXChorus8 *LPDIRECTSOUNDFXCHORUS8; -typedef struct IDirectSoundFXFlanger8 *LPDIRECTSOUNDFXFLANGER8; -typedef struct IDirectSoundFXEcho8 *LPDIRECTSOUNDFXECHO8; -typedef struct IDirectSoundFXDistortion8 *LPDIRECTSOUNDFXDISTORTION8; -typedef struct IDirectSoundFXCompressor8 *LPDIRECTSOUNDFXCOMPRESSOR8; -typedef struct IDirectSoundFXParamEq8 *LPDIRECTSOUNDFXPARAMEQ8; -typedef struct IDirectSoundFXWavesReverb8 *LPDIRECTSOUNDFXWAVESREVERB8; -typedef struct IDirectSoundFXI3DL2Reverb8 *LPDIRECTSOUNDFXI3DL2REVERB8; -typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8; -typedef struct IDirectSoundCaptureFXNoiseSuppress8 *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8; -typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8; - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IID definitions for the unchanged DirectSound 8.0 interfaces -// - -#if DIRECTSOUND_VERSION >= 0x0800 - -#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture -#define IID_IDirectSound3DListener8 IID_IDirectSound3DListener -#define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer -#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify -#define IID_IDirectSoundFXGargle8 IID_IDirectSoundFXGargle -#define IID_IDirectSoundFXChorus8 IID_IDirectSoundFXChorus -#define IID_IDirectSoundFXFlanger8 IID_IDirectSoundFXFlanger -#define IID_IDirectSoundFXEcho8 IID_IDirectSoundFXEcho -#define IID_IDirectSoundFXDistortion8 IID_IDirectSoundFXDistortion -#define IID_IDirectSoundFXCompressor8 IID_IDirectSoundFXCompressor -#define IID_IDirectSoundFXParamEq8 IID_IDirectSoundFXParamEq -#define IID_IDirectSoundFXWavesReverb8 IID_IDirectSoundFXWavesReverb -#define IID_IDirectSoundFXI3DL2Reverb8 IID_IDirectSoundFXI3DL2Reverb -#define IID_IDirectSoundCaptureFXAec8 IID_IDirectSoundCaptureFXAec -#define IID_IDirectSoundCaptureFXNoiseSuppress8 IID_IDirectSoundCaptureFXNoiseSuppress -#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Compatibility typedefs -// - -#ifndef _LPCWAVEFORMATEX_DEFINED -#define _LPCWAVEFORMATEX_DEFINED -typedef const WAVEFORMATEX *LPCWAVEFORMATEX; -#endif // _LPCWAVEFORMATEX_DEFINED - -#ifndef __LPCGUID_DEFINED__ -#define __LPCGUID_DEFINED__ -typedef const GUID *LPCGUID; -#endif // __LPCGUID_DEFINED__ - -typedef LPDIRECTSOUND *LPLPDIRECTSOUND; -typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER; -typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER; -typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER; -typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE; -typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER; -typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY; - -#if DIRECTSOUND_VERSION >= 0x0800 -typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8; -typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8; -typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8; -typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8; -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Structures -// - -typedef struct _DSCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwMinSecondarySampleRate; - DWORD dwMaxSecondarySampleRate; - DWORD dwPrimaryBuffers; - DWORD dwMaxHwMixingAllBuffers; - DWORD dwMaxHwMixingStaticBuffers; - DWORD dwMaxHwMixingStreamingBuffers; - DWORD dwFreeHwMixingAllBuffers; - DWORD dwFreeHwMixingStaticBuffers; - DWORD dwFreeHwMixingStreamingBuffers; - DWORD dwMaxHw3DAllBuffers; - DWORD dwMaxHw3DStaticBuffers; - DWORD dwMaxHw3DStreamingBuffers; - DWORD dwFreeHw3DAllBuffers; - DWORD dwFreeHw3DStaticBuffers; - DWORD dwFreeHw3DStreamingBuffers; - DWORD dwTotalHwMemBytes; - DWORD dwFreeHwMemBytes; - DWORD dwMaxContigFreeHwMemBytes; - DWORD dwUnlockTransferRateHwBuffers; - DWORD dwPlayCpuOverheadSwBuffers; - DWORD dwReserved1; - DWORD dwReserved2; -} DSCAPS, *LPDSCAPS; - -typedef const DSCAPS *LPCDSCAPS; - -typedef struct _DSBCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwUnlockTransferRate; - DWORD dwPlayCpuOverhead; -} DSBCAPS, *LPDSBCAPS; - -typedef const DSBCAPS *LPCDSBCAPS; - -#if DIRECTSOUND_VERSION >= 0x0800 - - typedef struct _DSEFFECTDESC - { - DWORD dwSize; - DWORD dwFlags; - GUID guidDSFXClass; - DWORD_PTR dwReserved1; - DWORD_PTR dwReserved2; - } DSEFFECTDESC, *LPDSEFFECTDESC; - typedef const DSEFFECTDESC *LPCDSEFFECTDESC; - - #define DSFX_LOCHARDWARE 0x00000001 - #define DSFX_LOCSOFTWARE 0x00000002 - - enum - { - DSFXR_PRESENT, // 0 - DSFXR_LOCHARDWARE, // 1 - DSFXR_LOCSOFTWARE, // 2 - DSFXR_UNALLOCATED, // 3 - DSFXR_FAILED, // 4 - DSFXR_UNKNOWN, // 5 - DSFXR_SENDLOOP // 6 - }; - - typedef struct _DSCEFFECTDESC - { - DWORD dwSize; - DWORD dwFlags; - GUID guidDSCFXClass; - GUID guidDSCFXInstance; - DWORD dwReserved1; - DWORD dwReserved2; - } DSCEFFECTDESC, *LPDSCEFFECTDESC; - typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; - - #define DSCFX_LOCHARDWARE 0x00000001 - #define DSCFX_LOCSOFTWARE 0x00000002 - - #define DSCFXR_LOCHARDWARE 0x00000010 - #define DSCFXR_LOCSOFTWARE 0x00000020 - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -typedef struct _DSBUFFERDESC -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -#if DIRECTSOUND_VERSION >= 0x0700 - GUID guid3DAlgorithm; -#endif -} DSBUFFERDESC, *LPDSBUFFERDESC; - -typedef const DSBUFFERDESC *LPCDSBUFFERDESC; - -// Older version of this structure: - -typedef struct _DSBUFFERDESC1 -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -} DSBUFFERDESC1, *LPDSBUFFERDESC1; - -typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; - -typedef struct _DS3DBUFFER -{ - DWORD dwSize; - D3DVECTOR vPosition; - D3DVECTOR vVelocity; - DWORD dwInsideConeAngle; - DWORD dwOutsideConeAngle; - D3DVECTOR vConeOrientation; - LONG lConeOutsideVolume; - D3DVALUE flMinDistance; - D3DVALUE flMaxDistance; - DWORD dwMode; -} DS3DBUFFER, *LPDS3DBUFFER; - -typedef const DS3DBUFFER *LPCDS3DBUFFER; - -typedef struct _DS3DLISTENER -{ - DWORD dwSize; - D3DVECTOR vPosition; - D3DVECTOR vVelocity; - D3DVECTOR vOrientFront; - D3DVECTOR vOrientTop; - D3DVALUE flDistanceFactor; - D3DVALUE flRolloffFactor; - D3DVALUE flDopplerFactor; -} DS3DLISTENER, *LPDS3DLISTENER; - -typedef const DS3DLISTENER *LPCDS3DLISTENER; - -typedef struct _DSCCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwFormats; - DWORD dwChannels; -} DSCCAPS, *LPDSCCAPS; - -typedef const DSCCAPS *LPCDSCCAPS; - -typedef struct _DSCBUFFERDESC1 -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -} DSCBUFFERDESC1, *LPDSCBUFFERDESC1; - -typedef struct _DSCBUFFERDESC -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -#if DIRECTSOUND_VERSION >= 0x0800 - DWORD dwFXCount; - LPDSCEFFECTDESC lpDSCFXDesc; -#endif -} DSCBUFFERDESC, *LPDSCBUFFERDESC; - -typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; - -typedef struct _DSCBCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; -} DSCBCAPS, *LPDSCBCAPS; - -typedef const DSCBCAPS *LPCDSCBCAPS; - -typedef struct _DSBPOSITIONNOTIFY -{ - DWORD dwOffset; - HANDLE hEventNotify; -} DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY; - -typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; - -// -// DirectSound API -// - -typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID); -typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPVOID); - -extern HRESULT WINAPI DirectSoundCreate(LPCGUID pcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); -extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); - -extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); -extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); - -#if DIRECTSOUND_VERSION >= 0x0800 -extern HRESULT WINAPI DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, - LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, - DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, - LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); -#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate - -extern HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest); -#endif // DIRECTSOUND_VERSION >= 0x0800 - -#ifdef UNICODE -#define LPDSENUMCALLBACK LPDSENUMCALLBACKW -#define DirectSoundEnumerate DirectSoundEnumerateW -#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW -#else // UNICODE -#define LPDSENUMCALLBACK LPDSENUMCALLBACKA -#define DirectSoundEnumerate DirectSoundEnumerateA -#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA -#endif // UNICODE - -// -// IUnknown -// - -#if !defined(__cplusplus) || defined(CINTERFACE) -#ifndef IUnknown_QueryInterface -#define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#endif // IUnknown_QueryInterface -#ifndef IUnknown_AddRef -#define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) -#endif // IUnknown_AddRef -#ifndef IUnknown_Release -#define IUnknown_Release(p) (p)->lpVtbl->Release(p) -#endif // IUnknown_Release -#else // !defined(__cplusplus) || defined(CINTERFACE) -#ifndef IUnknown_QueryInterface -#define IUnknown_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#endif // IUnknown_QueryInterface -#ifndef IUnknown_AddRef -#define IUnknown_AddRef(p) (p)->AddRef() -#endif // IUnknown_AddRef -#ifndef IUnknown_Release -#define IUnknown_Release(p) (p)->Release() -#endif // IUnknown_Release -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#ifndef __IReferenceClock_INTERFACE_DEFINED__ -#define __IReferenceClock_INTERFACE_DEFINED__ - -typedef LONGLONG REFERENCE_TIME; -typedef REFERENCE_TIME *LPREFERENCE_TIME; - -DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); - -#undef INTERFACE -#define INTERFACE IReferenceClock - -DECLARE_INTERFACE_(IReferenceClock, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IReferenceClock methods - STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; - STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME rtBaseTime, REFERENCE_TIME rtStreamTime, - HANDLE hEvent, LPDWORD pdwAdviseCookie) PURE; - STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME rtStartTime, REFERENCE_TIME rtPeriodTime, - HANDLE hSemaphore, LPDWORD pdwAdviseCookie) PURE; - STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; -}; - -#endif // __IReferenceClock_INTERFACE_DEFINED__ - -#ifndef IReferenceClock_QueryInterface - -#define IReferenceClock_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IReferenceClock_AddRef(p) IUnknown_AddRef(p) -#define IReferenceClock_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) -#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) -#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) -#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IReferenceClock_GetTime(p,a) (p)->GetTime(a) -#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->AdviseTime(a,b,c,d) -#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->AdvisePeriodic(a,b,c,d) -#define IReferenceClock_Unadvise(p,a) (p)->Unadvise(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // IReferenceClock_QueryInterface - -// -// IDirectSound -// - -DEFINE_GUID(IID_IDirectSound, 0x279AFA83, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound - -DECLARE_INTERFACE_(IDirectSound, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound methods - STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; - STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; - STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; - STDMETHOD(Compact) (THIS) PURE; - STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; - STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; -}; - -#define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) -#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) -#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) -#define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b) -#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) -#define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) -#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectSound_Compact(p) (p)->Compact() -#define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) -#define IDirectSound_SetSpeakerConfig(p,b) (p)->SetSpeakerConfig(b) -#define IDirectSound_Initialize(p,a) (p)->Initialize(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSound8 -// - -DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93, 0xF395, 0x4834, 0x9E, 0xF6, 0x7F, 0xA9, 0x9D, 0xE5, 0x09, 0x66); - -#undef INTERFACE -#define INTERFACE IDirectSound8 - -DECLARE_INTERFACE_(IDirectSound8, IDirectSound) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound methods - STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; - STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; - STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; - STDMETHOD(Compact) (THIS) PURE; - STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; - STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; - - // IDirectSound8 methods - STDMETHOD(VerifyCertification) (THIS_ LPDWORD pdwCertified) PURE; -}; - -#define IDirectSound8_QueryInterface(p,a,b) IDirectSound_QueryInterface(p,a,b) -#define IDirectSound8_AddRef(p) IDirectSound_AddRef(p) -#define IDirectSound8_Release(p) IDirectSound_Release(p) -#define IDirectSound8_CreateSoundBuffer(p,a,b,c) IDirectSound_CreateSoundBuffer(p,a,b,c) -#define IDirectSound8_GetCaps(p,a) IDirectSound_GetCaps(p,a) -#define IDirectSound8_DuplicateSoundBuffer(p,a,b) IDirectSound_DuplicateSoundBuffer(p,a,b) -#define IDirectSound8_SetCooperativeLevel(p,a,b) IDirectSound_SetCooperativeLevel(p,a,b) -#define IDirectSound8_Compact(p) IDirectSound_Compact(p) -#define IDirectSound8_GetSpeakerConfig(p,a) IDirectSound_GetSpeakerConfig(p,a) -#define IDirectSound8_SetSpeakerConfig(p,a) IDirectSound_SetSpeakerConfig(p,a) -#define IDirectSound8_Initialize(p,a) IDirectSound_Initialize(p,a) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundBuffer -// - -DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSoundBuffer - -DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; - STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; - STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; - STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; - STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; - STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; - STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; - STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - STDMETHOD(Restore) (THIS) PURE; -}; - -#define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) -#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) -#define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) -#define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) -#define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) -#define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) -#define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) -#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) -#define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) -#define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) -#define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) -#define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) -#define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) -#define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) -#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) -#define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) -#define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) -#define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) -#define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) -#define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) -#define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) -#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) -#define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) -#define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) -#define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) -#define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) -#define IDirectSoundBuffer_Stop(p) (p)->Stop() -#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) -#define IDirectSoundBuffer_Restore(p) (p)->Restore() -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundBuffer8 -// - -DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825a449, 0x7524, 0x4d82, 0x92, 0x0f, 0x50, 0xe3, 0x6a, 0xb3, 0xab, 0x1e); - -#undef INTERFACE -#define INTERFACE IDirectSoundBuffer8 - -DECLARE_INTERFACE_(IDirectSoundBuffer8, IDirectSoundBuffer) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; - STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; - STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; - STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; - STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; - STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; - STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; - STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - STDMETHOD(Restore) (THIS) PURE; - - // IDirectSoundBuffer8 methods - STDMETHOD(SetFX) (THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; - STDMETHOD(AcquireResources) (THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; - STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; -}; - -// Special GUID meaning "select all objects" for use in GetObjectInPath() -DEFINE_GUID(GUID_All_Objects, 0xaa114de5, 0xc262, 0x4169, 0xa1, 0xc8, 0x23, 0xd6, 0x98, 0xcc, 0x73, 0xb5); - -#define IDirectSoundBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundBuffer8_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundBuffer8_Release(p) IUnknown_Release(p) - -#define IDirectSoundBuffer8_GetCaps(p,a) IDirectSoundBuffer_GetCaps(p,a) -#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) IDirectSoundBuffer_GetCurrentPosition(p,a,b) -#define IDirectSoundBuffer8_GetFormat(p,a,b,c) IDirectSoundBuffer_GetFormat(p,a,b,c) -#define IDirectSoundBuffer8_GetVolume(p,a) IDirectSoundBuffer_GetVolume(p,a) -#define IDirectSoundBuffer8_GetPan(p,a) IDirectSoundBuffer_GetPan(p,a) -#define IDirectSoundBuffer8_GetFrequency(p,a) IDirectSoundBuffer_GetFrequency(p,a) -#define IDirectSoundBuffer8_GetStatus(p,a) IDirectSoundBuffer_GetStatus(p,a) -#define IDirectSoundBuffer8_Initialize(p,a,b) IDirectSoundBuffer_Initialize(p,a,b) -#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundBuffer8_Play(p,a,b,c) IDirectSoundBuffer_Play(p,a,b,c) -#define IDirectSoundBuffer8_SetCurrentPosition(p,a) IDirectSoundBuffer_SetCurrentPosition(p,a) -#define IDirectSoundBuffer8_SetFormat(p,a) IDirectSoundBuffer_SetFormat(p,a) -#define IDirectSoundBuffer8_SetVolume(p,a) IDirectSoundBuffer_SetVolume(p,a) -#define IDirectSoundBuffer8_SetPan(p,a) IDirectSoundBuffer_SetPan(p,a) -#define IDirectSoundBuffer8_SetFrequency(p,a) IDirectSoundBuffer_SetFrequency(p,a) -#define IDirectSoundBuffer8_Stop(p) IDirectSoundBuffer_Stop(p) -#define IDirectSoundBuffer8_Unlock(p,a,b,c,d) IDirectSoundBuffer_Unlock(p,a,b,c,d) -#define IDirectSoundBuffer8_Restore(p) IDirectSoundBuffer_Restore(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) -#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) -#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) -#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) -#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSound3DListener -// - -DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound3DListener - -DECLARE_INTERFACE_(IDirectSound3DListener, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound3DListener methods - STDMETHOD(GetAllParameters) (THIS_ LPDS3DLISTENER pListener) PURE; - STDMETHOD(GetDistanceFactor) (THIS_ D3DVALUE* pflDistanceFactor) PURE; - STDMETHOD(GetDopplerFactor) (THIS_ D3DVALUE* pflDopplerFactor) PURE; - STDMETHOD(GetOrientation) (THIS_ D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop) PURE; - STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; - STDMETHOD(GetRolloffFactor) (THIS_ D3DVALUE* pflRolloffFactor) PURE; - STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; - STDMETHOD(SetAllParameters) (THIS_ LPCDS3DLISTENER pcListener, DWORD dwApply) PURE; - STDMETHOD(SetDistanceFactor) (THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; - STDMETHOD(SetDopplerFactor) (THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; - STDMETHOD(SetOrientation) (THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, - D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; - STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetRolloffFactor) (THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; - STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(CommitDeferredSettings) (THIS) PURE; -}; - -#define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound3DListener_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) -#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) -#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) -#define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) -#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) -#define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) -#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) -#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) -#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) -#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) -#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) -#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) -#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) -#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) -#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) -#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) -#define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) -#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) -#define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) -#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) -#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) -#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) -#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) -#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) -#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) -#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) -#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSound3DBuffer -// - -DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound3DBuffer - -DECLARE_INTERFACE_(IDirectSound3DBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound3DBuffer methods - STDMETHOD(GetAllParameters) (THIS_ LPDS3DBUFFER pDs3dBuffer) PURE; - STDMETHOD(GetConeAngles) (THIS_ LPDWORD pdwInsideConeAngle, LPDWORD pdwOutsideConeAngle) PURE; - STDMETHOD(GetConeOrientation) (THIS_ D3DVECTOR* pvOrientation) PURE; - STDMETHOD(GetConeOutsideVolume) (THIS_ LPLONG plConeOutsideVolume) PURE; - STDMETHOD(GetMaxDistance) (THIS_ D3DVALUE* pflMaxDistance) PURE; - STDMETHOD(GetMinDistance) (THIS_ D3DVALUE* pflMinDistance) PURE; - STDMETHOD(GetMode) (THIS_ LPDWORD pdwMode) PURE; - STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; - STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; - STDMETHOD(SetAllParameters) (THIS_ LPCDS3DBUFFER pcDs3dBuffer, DWORD dwApply) PURE; - STDMETHOD(SetConeAngles) (THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; - STDMETHOD(SetConeOrientation) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetConeOutsideVolume) (THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; - STDMETHOD(SetMaxDistance) (THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; - STDMETHOD(SetMinDistance) (THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; - STDMETHOD(SetMode) (THIS_ DWORD dwMode, DWORD dwApply) PURE; - STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; -}; - -#define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound3DBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) -#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) -#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) -#define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) -#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) -#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) -#define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) -#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) -#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) -#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) -#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) -#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) -#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) -#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) -#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) -#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) -#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) -#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) -#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) -#define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) -#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) -#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) -#define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) -#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) -#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) -#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) -#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) -#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) -#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) -#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) -#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) -#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) -#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCapture -// - -DEFINE_GUID(IID_IDirectSoundCapture, 0xb0210781, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundCapture - -DECLARE_INTERFACE_(IDirectSoundCapture, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCapture methods - STDMETHOD(CreateCaptureBuffer) (THIS_ LPCDSCBUFFERDESC pcDSCBufferDesc, LPDIRECTSOUNDCAPTUREBUFFER *ppDSCBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCCAPS pDSCCaps) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; -}; - -#define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCapture_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) -#define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) -#define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCaptureBuffer -// - -DEFINE_GUID(IID_IDirectSoundCaptureBuffer, 0xb0210782, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureBuffer - -DECLARE_INTERFACE_(IDirectSoundCaptureBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; -}; - -#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) -#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) -#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) -#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) -#define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) -#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) -#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) -#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) -#define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() -#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundCaptureBuffer8 -// - -DEFINE_GUID(IID_IDirectSoundCaptureBuffer8, 0x990df4, 0xdbb, 0x4872, 0x83, 0x3e, 0x6d, 0x30, 0x3e, 0x80, 0xae, 0xb6); - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureBuffer8 - -DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8, IDirectSoundCaptureBuffer) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - - // IDirectSoundCaptureBuffer8 methods - STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; - STDMETHOD(GetFXStatus) (DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; -}; - -#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureBuffer8_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureBuffer8_Release(p) IUnknown_Release(p) - -#define IDirectSoundCaptureBuffer8_GetCaps(p,a) IDirectSoundCaptureBuffer_GetCaps(p,a) -#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) -#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) -#define IDirectSoundCaptureBuffer8_GetStatus(p,a) IDirectSoundCaptureBuffer_GetStatus(p,a) -#define IDirectSoundCaptureBuffer8_Initialize(p,a,b) IDirectSoundCaptureBuffer_Initialize(p,a,b) -#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer8_Start(p,a) IDirectSoundCaptureBuffer_Start(p,a) -#define IDirectSoundCaptureBuffer8_Stop(p) IDirectSoundCaptureBuffer_Stop(p)) -#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) -#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) -#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundNotify -// - -DEFINE_GUID(IID_IDirectSoundNotify, 0xb0210783, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundNotify - -DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundNotify methods - STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; -}; - -#define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundNotify_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IKsPropertySet -// - -#ifndef _IKsPropertySet_ -#define _IKsPropertySet_ - -#ifdef __cplusplus -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -struct IKsPropertySet; -#endif // __cplusplus - -typedef struct IKsPropertySet *LPKSPROPERTYSET; - -#define KSPROPERTY_SUPPORT_GET 0x00000001 -#define KSPROPERTY_SUPPORT_SET 0x00000002 - -DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); - -#undef INTERFACE -#define INTERFACE IKsPropertySet - -DECLARE_INTERFACE_(IKsPropertySet, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IKsPropertySet methods - STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, - LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; - STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, - LPVOID pPropertyData, ULONG ulDataLength) PURE; - STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; -}; - -#define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IKsPropertySet_AddRef(p) IUnknown_AddRef(p) -#define IKsPropertySet_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) -#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) -#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) -#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) -#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // _IKsPropertySet_ - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundFXGargle -// - -DEFINE_GUID(IID_IDirectSoundFXGargle, 0xd616f352, 0xd622, 0x11ce, 0xaa, 0xc5, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3); - -typedef struct _DSFXGargle -{ - DWORD dwRateHz; // Rate of modulation in hz - DWORD dwWaveShape; // DSFXGARGLE_WAVE_xxx -} DSFXGargle, *LPDSFXGargle; - -#define DSFXGARGLE_WAVE_TRIANGLE 0 -#define DSFXGARGLE_WAVE_SQUARE 1 - -typedef const DSFXGargle *LPCDSFXGargle; - -#define DSFXGARGLE_RATEHZ_MIN 1 -#define DSFXGARGLE_RATEHZ_MAX 1000 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXGargle - -DECLARE_INTERFACE_(IDirectSoundFXGargle, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXGargle methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXGargle pcDsFxGargle) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXGargle pDsFxGargle) PURE; -}; - -#define IDirectSoundFXGargle_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXGargle_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXGargle_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXChorus -// - -DEFINE_GUID(IID_IDirectSoundFXChorus, 0x880842e3, 0x145f, 0x43e6, 0xa9, 0x34, 0xa7, 0x18, 0x06, 0xe5, 0x05, 0x47); - -typedef struct _DSFXChorus -{ - FLOAT fWetDryMix; - FLOAT fDepth; - FLOAT fFeedback; - FLOAT fFrequency; - LONG lWaveform; // LFO shape; DSFXCHORUS_WAVE_xxx - FLOAT fDelay; - LONG lPhase; -} DSFXChorus, *LPDSFXChorus; - -typedef const DSFXChorus *LPCDSFXChorus; - -#define DSFXCHORUS_WAVE_TRIANGLE 0 -#define DSFXCHORUS_WAVE_SIN 1 - -#define DSFXCHORUS_WETDRYMIX_MIN 0.0f -#define DSFXCHORUS_WETDRYMIX_MAX 100.0f -#define DSFXCHORUS_DEPTH_MIN 0.0f -#define DSFXCHORUS_DEPTH_MAX 100.0f -#define DSFXCHORUS_FEEDBACK_MIN -99.0f -#define DSFXCHORUS_FEEDBACK_MAX 99.0f -#define DSFXCHORUS_FREQUENCY_MIN 0.0f -#define DSFXCHORUS_FREQUENCY_MAX 10.0f -#define DSFXCHORUS_DELAY_MIN 0.0f -#define DSFXCHORUS_DELAY_MAX 20.0f -#define DSFXCHORUS_PHASE_MIN 0 -#define DSFXCHORUS_PHASE_MAX 4 - -#define DSFXCHORUS_PHASE_NEG_180 0 -#define DSFXCHORUS_PHASE_NEG_90 1 -#define DSFXCHORUS_PHASE_ZERO 2 -#define DSFXCHORUS_PHASE_90 3 -#define DSFXCHORUS_PHASE_180 4 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXChorus - -DECLARE_INTERFACE_(IDirectSoundFXChorus, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXChorus methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXChorus pcDsFxChorus) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXChorus pDsFxChorus) PURE; -}; - -#define IDirectSoundFXChorus_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXChorus_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXChorus_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXFlanger -// - -DEFINE_GUID(IID_IDirectSoundFXFlanger, 0x903e9878, 0x2c92, 0x4072, 0x9b, 0x2c, 0xea, 0x68, 0xf5, 0x39, 0x67, 0x83); - -typedef struct _DSFXFlanger -{ - FLOAT fWetDryMix; - FLOAT fDepth; - FLOAT fFeedback; - FLOAT fFrequency; - LONG lWaveform; - FLOAT fDelay; - LONG lPhase; -} DSFXFlanger, *LPDSFXFlanger; - -typedef const DSFXFlanger *LPCDSFXFlanger; - -#define DSFXFLANGER_WAVE_TRIANGLE 0 -#define DSFXFLANGER_WAVE_SIN 1 - -#define DSFXFLANGER_WETDRYMIX_MIN 0.0f -#define DSFXFLANGER_WETDRYMIX_MAX 100.0f -#define DSFXFLANGER_FREQUENCY_MIN 0.0f -#define DSFXFLANGER_FREQUENCY_MAX 10.0f -#define DSFXFLANGER_DEPTH_MIN 0.0f -#define DSFXFLANGER_DEPTH_MAX 100.0f -#define DSFXFLANGER_PHASE_MIN 0 -#define DSFXFLANGER_PHASE_MAX 4 -#define DSFXFLANGER_FEEDBACK_MIN -99.0f -#define DSFXFLANGER_FEEDBACK_MAX 99.0f -#define DSFXFLANGER_DELAY_MIN 0.0f -#define DSFXFLANGER_DELAY_MAX 4.0f - -#define DSFXFLANGER_PHASE_NEG_180 0 -#define DSFXFLANGER_PHASE_NEG_90 1 -#define DSFXFLANGER_PHASE_ZERO 2 -#define DSFXFLANGER_PHASE_90 3 -#define DSFXFLANGER_PHASE_180 4 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXFlanger - -DECLARE_INTERFACE_(IDirectSoundFXFlanger, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXFlanger methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXFlanger pcDsFxFlanger) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXFlanger pDsFxFlanger) PURE; -}; - -#define IDirectSoundFXFlanger_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXFlanger_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXFlanger_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXEcho -// - -DEFINE_GUID(IID_IDirectSoundFXEcho, 0x8bd28edf, 0x50db, 0x4e92, 0xa2, 0xbd, 0x44, 0x54, 0x88, 0xd1, 0xed, 0x42); - -typedef struct _DSFXEcho -{ - FLOAT fWetDryMix; - FLOAT fFeedback; - FLOAT fLeftDelay; - FLOAT fRightDelay; - LONG lPanDelay; -} DSFXEcho, *LPDSFXEcho; - -typedef const DSFXEcho *LPCDSFXEcho; - -#define DSFXECHO_WETDRYMIX_MIN 0.0f -#define DSFXECHO_WETDRYMIX_MAX 100.0f -#define DSFXECHO_FEEDBACK_MIN 0.0f -#define DSFXECHO_FEEDBACK_MAX 100.0f -#define DSFXECHO_LEFTDELAY_MIN 1.0f -#define DSFXECHO_LEFTDELAY_MAX 2000.0f -#define DSFXECHO_RIGHTDELAY_MIN 1.0f -#define DSFXECHO_RIGHTDELAY_MAX 2000.0f -#define DSFXECHO_PANDELAY_MIN 0 -#define DSFXECHO_PANDELAY_MAX 1 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXEcho - -DECLARE_INTERFACE_(IDirectSoundFXEcho, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXEcho methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXEcho pcDsFxEcho) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXEcho pDsFxEcho) PURE; -}; - -#define IDirectSoundFXEcho_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXEcho_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXEcho_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXDistortion -// - -DEFINE_GUID(IID_IDirectSoundFXDistortion, 0x8ecf4326, 0x455f, 0x4d8b, 0xbd, 0xa9, 0x8d, 0x5d, 0x3e, 0x9e, 0x3e, 0x0b); - -typedef struct _DSFXDistortion -{ - FLOAT fGain; - FLOAT fEdge; - FLOAT fPostEQCenterFrequency; - FLOAT fPostEQBandwidth; - FLOAT fPreLowpassCutoff; -} DSFXDistortion, *LPDSFXDistortion; - -typedef const DSFXDistortion *LPCDSFXDistortion; - -#define DSFXDISTORTION_GAIN_MIN -60.0f -#define DSFXDISTORTION_GAIN_MAX 0.0f -#define DSFXDISTORTION_EDGE_MIN 0.0f -#define DSFXDISTORTION_EDGE_MAX 100.0f -#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN 100.0f -#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f -#define DSFXDISTORTION_POSTEQBANDWIDTH_MIN 100.0f -#define DSFXDISTORTION_POSTEQBANDWIDTH_MAX 8000.0f -#define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN 100.0f -#define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX 8000.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXDistortion - -DECLARE_INTERFACE_(IDirectSoundFXDistortion, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXDistortion methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXDistortion pcDsFxDistortion) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXDistortion pDsFxDistortion) PURE; -}; - -#define IDirectSoundFXDistortion_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXDistortion_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXDistortion_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXCompressor -// - -DEFINE_GUID(IID_IDirectSoundFXCompressor, 0x4bbd1154, 0x62f6, 0x4e2c, 0xa1, 0x5c, 0xd3, 0xb6, 0xc4, 0x17, 0xf7, 0xa0); - -typedef struct _DSFXCompressor -{ - FLOAT fGain; - FLOAT fAttack; - FLOAT fRelease; - FLOAT fThreshold; - FLOAT fRatio; - FLOAT fPredelay; -} DSFXCompressor, *LPDSFXCompressor; - -typedef const DSFXCompressor *LPCDSFXCompressor; - -#define DSFXCOMPRESSOR_GAIN_MIN -60.0f -#define DSFXCOMPRESSOR_GAIN_MAX 60.0f -#define DSFXCOMPRESSOR_ATTACK_MIN 0.01f -#define DSFXCOMPRESSOR_ATTACK_MAX 500.0f -#define DSFXCOMPRESSOR_RELEASE_MIN 50.0f -#define DSFXCOMPRESSOR_RELEASE_MAX 3000.0f -#define DSFXCOMPRESSOR_THRESHOLD_MIN -60.0f -#define DSFXCOMPRESSOR_THRESHOLD_MAX 0.0f -#define DSFXCOMPRESSOR_RATIO_MIN 1.0f -#define DSFXCOMPRESSOR_RATIO_MAX 100.0f -#define DSFXCOMPRESSOR_PREDELAY_MIN 0.0f -#define DSFXCOMPRESSOR_PREDELAY_MAX 4.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXCompressor - -DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXCompressor methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXCompressor pcDsFxCompressor) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXCompressor pDsFxCompressor) PURE; -}; - -#define IDirectSoundFXCompressor_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXCompressor_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXCompressor_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXParamEq -// - -DEFINE_GUID(IID_IDirectSoundFXParamEq, 0xc03ca9fe, 0xfe90, 0x4204, 0x80, 0x78, 0x82, 0x33, 0x4c, 0xd1, 0x77, 0xda); - -typedef struct _DSFXParamEq -{ - FLOAT fCenter; - FLOAT fBandwidth; - FLOAT fGain; -} DSFXParamEq, *LPDSFXParamEq; - -typedef const DSFXParamEq *LPCDSFXParamEq; - -#define DSFXPARAMEQ_CENTER_MIN 80.0f -#define DSFXPARAMEQ_CENTER_MAX 16000.0f -#define DSFXPARAMEQ_BANDWIDTH_MIN 1.0f -#define DSFXPARAMEQ_BANDWIDTH_MAX 36.0f -#define DSFXPARAMEQ_GAIN_MIN -15.0f -#define DSFXPARAMEQ_GAIN_MAX 15.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXParamEq - -DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXParamEq methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXParamEq pcDsFxParamEq) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXParamEq pDsFxParamEq) PURE; -}; - -#define IDirectSoundFXParamEq_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXParamEq_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXParamEq_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXI3DL2Reverb -// - -DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4); - -typedef struct _DSFXI3DL2Reverb -{ - LONG lRoom; // [-10000, 0] default: -1000 mB - LONG lRoomHF; // [-10000, 0] default: 0 mB - FLOAT flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 - FLOAT flDecayTime; // [0.1, 20.0] default: 1.49s - FLOAT flDecayHFRatio; // [0.1, 2.0] default: 0.83 - LONG lReflections; // [-10000, 1000] default: -2602 mB - FLOAT flReflectionsDelay; // [0.0, 0.3] default: 0.007 s - LONG lReverb; // [-10000, 2000] default: 200 mB - FLOAT flReverbDelay; // [0.0, 0.1] default: 0.011 s - FLOAT flDiffusion; // [0.0, 100.0] default: 100.0 % - FLOAT flDensity; // [0.0, 100.0] default: 100.0 % - FLOAT flHFReference; // [20.0, 20000.0] default: 5000.0 Hz -} DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb; - -typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb; - -#define DSFX_I3DL2REVERB_ROOM_MIN (-10000) -#define DSFX_I3DL2REVERB_ROOM_MAX 0 -#define DSFX_I3DL2REVERB_ROOM_DEFAULT (-1000) - -#define DSFX_I3DL2REVERB_ROOMHF_MIN (-10000) -#define DSFX_I3DL2REVERB_ROOMHF_MAX 0 -#define DSFX_I3DL2REVERB_ROOMHF_DEFAULT (-100) - -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN 0.0f -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX 10.0f -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT 0.0f - -#define DSFX_I3DL2REVERB_DECAYTIME_MIN 0.1f -#define DSFX_I3DL2REVERB_DECAYTIME_MAX 20.0f -#define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT 1.49f - -#define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN 0.1f -#define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX 2.0f -#define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT 0.83f - -#define DSFX_I3DL2REVERB_REFLECTIONS_MIN (-10000) -#define DSFX_I3DL2REVERB_REFLECTIONS_MAX 1000 -#define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT (-2602) - -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN 0.0f -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX 0.3f -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT 0.007f - -#define DSFX_I3DL2REVERB_REVERB_MIN (-10000) -#define DSFX_I3DL2REVERB_REVERB_MAX 2000 -#define DSFX_I3DL2REVERB_REVERB_DEFAULT (200) - -#define DSFX_I3DL2REVERB_REVERBDELAY_MIN 0.0f -#define DSFX_I3DL2REVERB_REVERBDELAY_MAX 0.1f -#define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT 0.011f - -#define DSFX_I3DL2REVERB_DIFFUSION_MIN 0.0f -#define DSFX_I3DL2REVERB_DIFFUSION_MAX 100.0f -#define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT 100.0f - -#define DSFX_I3DL2REVERB_DENSITY_MIN 0.0f -#define DSFX_I3DL2REVERB_DENSITY_MAX 100.0f -#define DSFX_I3DL2REVERB_DENSITY_DEFAULT 100.0f - -#define DSFX_I3DL2REVERB_HFREFERENCE_MIN 20.0f -#define DSFX_I3DL2REVERB_HFREFERENCE_MAX 20000.0f -#define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT 5000.0f - -#define DSFX_I3DL2REVERB_QUALITY_MIN 0 -#define DSFX_I3DL2REVERB_QUALITY_MAX 3 -#define DSFX_I3DL2REVERB_QUALITY_DEFAULT 2 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXI3DL2Reverb - -DECLARE_INTERFACE_(IDirectSoundFXI3DL2Reverb, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXI3DL2Reverb methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXI3DL2Reverb pcDsFxI3DL2Reverb) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXI3DL2Reverb pDsFxI3DL2Reverb) PURE; - STDMETHOD(SetPreset) (THIS_ DWORD dwPreset) PURE; - STDMETHOD(GetPreset) (THIS_ LPDWORD pdwPreset) PURE; - STDMETHOD(SetQuality) (THIS_ LONG lQuality) PURE; - STDMETHOD(GetQuality) (THIS_ LONG *plQuality) PURE; -}; - -#define IDirectSoundFXI3DL2Reverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXI3DL2Reverb_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXI3DL2Reverb_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->lpVtbl->SetPreset(p,a) -#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->lpVtbl->GetPreset(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->SetPreset(a) -#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->GetPreset(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXWavesReverb -// - -DEFINE_GUID(IID_IDirectSoundFXWavesReverb,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25); - -typedef struct _DSFXWavesReverb -{ - FLOAT fInGain; // [-96.0,0.0] default: 0.0 dB - FLOAT fReverbMix; // [-96.0,0.0] default: 0.0 db - FLOAT fReverbTime; // [0.001,3000.0] default: 1000.0 ms - FLOAT fHighFreqRTRatio; // [0.001,0.999] default: 0.001 -} DSFXWavesReverb, *LPDSFXWavesReverb; - -typedef const DSFXWavesReverb *LPCDSFXWavesReverb; - -#define DSFX_WAVESREVERB_INGAIN_MIN -96.0f -#define DSFX_WAVESREVERB_INGAIN_MAX 0.0f -#define DSFX_WAVESREVERB_INGAIN_DEFAULT 0.0f -#define DSFX_WAVESREVERB_REVERBMIX_MIN -96.0f -#define DSFX_WAVESREVERB_REVERBMIX_MAX 0.0f -#define DSFX_WAVESREVERB_REVERBMIX_DEFAULT 0.0f -#define DSFX_WAVESREVERB_REVERBTIME_MIN 0.001f -#define DSFX_WAVESREVERB_REVERBTIME_MAX 3000.0f -#define DSFX_WAVESREVERB_REVERBTIME_DEFAULT 1000.0f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN 0.001f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX 0.999f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT 0.001f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXWavesReverb - -DECLARE_INTERFACE_(IDirectSoundFXWavesReverb, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXWavesReverb methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXWavesReverb pcDsFxWavesReverb) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXWavesReverb pDsFxWavesReverb) PURE; -}; - -#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXWavesReverb_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXWavesReverb_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCaptureFXAec -// - -DEFINE_GUID(IID_IDirectSoundCaptureFXAec, 0xad74143d, 0x903d, 0x4ab7, 0x80, 0x66, 0x28, 0xd3, 0x63, 0x03, 0x6d, 0x65); - -typedef struct _DSCFXAec -{ - BOOL fEnable; - BOOL fNoiseFill; - DWORD dwMode; -} DSCFXAec, *LPDSCFXAec; - -typedef const DSCFXAec *LPCDSCFXAec; - -// These match the AEC_MODE_* constants in the DDK's ksmedia.h file -#define DSCFX_AEC_MODE_PASS_THROUGH 0x0 -#define DSCFX_AEC_MODE_HALF_DUPLEX 0x1 -#define DSCFX_AEC_MODE_FULL_DUPLEX 0x2 - -// These match the AEC_STATUS_* constants in ksmedia.h -#define DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED 0x0 -#define DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED 0x1 -#define DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED 0x2 -#define DSCFX_AEC_STATUS_CURRENTLY_CONVERGED 0x8 - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureFXAec - -DECLARE_INTERFACE_(IDirectSoundCaptureFXAec, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureFXAec methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXAec pDscFxAec) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSCFXAec pDscFxAec) PURE; - STDMETHOD(GetStatus) (THIS_ PDWORD pdwStatus) PURE; - STDMETHOD(Reset) (THIS) PURE; -}; - -#define IDirectSoundCaptureFXAec_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureFXAec_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureFXAec_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -// -// IDirectSoundCaptureFXNoiseSuppress -// - -DEFINE_GUID(IID_IDirectSoundCaptureFXNoiseSuppress, 0xed311e41, 0xfbae, 0x4175, 0x96, 0x25, 0xcd, 0x8, 0x54, 0xf6, 0x93, 0xca); - -typedef struct _DSCFXNoiseSuppress -{ - BOOL fEnable; -} DSCFXNoiseSuppress, *LPDSCFXNoiseSuppress; - -typedef const DSCFXNoiseSuppress *LPCDSCFXNoiseSuppress; - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureFXNoiseSuppress - -DECLARE_INTERFACE_(IDirectSoundCaptureFXNoiseSuppress, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureFXNoiseSuppress methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXNoiseSuppress pcDscFxNoiseSuppress) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSCFXNoiseSuppress pDscFxNoiseSuppress) PURE; - STDMETHOD(Reset) (THIS) PURE; -}; - -#define IDirectSoundCaptureFXNoiseSuppress_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureFXNoiseSuppress_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureFXNoiseSuppress_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -// -// IDirectSoundFullDuplex -// - -#ifndef _IDirectSoundFullDuplex_ -#define _IDirectSoundFullDuplex_ - -#ifdef __cplusplus -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -struct IDirectSoundFullDuplex; -#endif // __cplusplus - -typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; - -DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xedcb4c7a, 0xdaab, 0x4216, 0xa4, 0x2e, 0x6c, 0x50, 0x59, 0x6d, 0xdc, 0x1d); - -#undef INTERFACE -#define INTERFACE IDirectSoundFullDuplex - -DECLARE_INTERFACE_(IDirectSoundFullDuplex, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFullDuplex methods - STDMETHOD(Initialize) (THIS_ LPCGUID pCaptureGuid, LPCGUID pRenderGuid, LPCDSCBUFFERDESC lpDscBufferDesc, LPCDSBUFFERDESC lpDsBufferDesc, HWND hWnd, DWORD dwLevel, LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8, LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; -}; - -#define IDirectSoundFullDuplex_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFullDuplex_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFullDuplex_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // _IDirectSoundFullDuplex_ - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Return Codes -// - -// The function completed successfully -#define DS_OK S_OK - -// The call succeeded, but we had to substitute the 3D algorithm -#define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) - -// The call failed because resources (such as a priority level) -// were already being used by another caller -#define DSERR_ALLOCATED MAKE_DSHRESULT(10) - -// The control (vol, pan, etc.) requested by the caller is not available -#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) - -// An invalid parameter was passed to the returning function -#define DSERR_INVALIDPARAM E_INVALIDARG - -// This call is not valid for the current state of this object -#define DSERR_INVALIDCALL MAKE_DSHRESULT(50) - -// An undetermined error occurred inside the DirectSound subsystem -#define DSERR_GENERIC E_FAIL - -// The caller does not have the priority level required for the function to -// succeed -#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) - -// Not enough free memory is available to complete the operation -#define DSERR_OUTOFMEMORY E_OUTOFMEMORY - -// The specified WAVE format is not supported -#define DSERR_BADFORMAT MAKE_DSHRESULT(100) - -// The function called is not supported at this time -#define DSERR_UNSUPPORTED E_NOTIMPL - -// No sound driver is available for use -#define DSERR_NODRIVER MAKE_DSHRESULT(120) - -// This object is already initialized -#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) - -// This object does not support aggregation -#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION - -// The buffer memory has been lost, and must be restored -#define DSERR_BUFFERLOST MAKE_DSHRESULT(150) - -// Another app has a higher priority level, preventing this call from -// succeeding -#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) - -// This object has not been initialized -#define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) - -// The requested COM interface is not available -#define DSERR_NOINTERFACE E_NOINTERFACE - -// Access is denied -#define DSERR_ACCESSDENIED E_ACCESSDENIED - -// Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds -#define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) - -// Attempt to use DirectSound 8 functionality on an older DirectSound object -#define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) - -// A circular loop of send effects was detected -#define DSERR_SENDLOOP MAKE_DSHRESULT(200) - -// The GUID specified in an audiopath file does not match a valid MIXIN buffer -#define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) - -// The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) -#define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) - -// The effects requested could not be found on the system, or they were found -// but in the wrong order, or in the wrong hardware/software locations. -#define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220) - -// -// Flags -// - -#define DSCAPS_PRIMARYMONO 0x00000001 -#define DSCAPS_PRIMARYSTEREO 0x00000002 -#define DSCAPS_PRIMARY8BIT 0x00000004 -#define DSCAPS_PRIMARY16BIT 0x00000008 -#define DSCAPS_CONTINUOUSRATE 0x00000010 -#define DSCAPS_EMULDRIVER 0x00000020 -#define DSCAPS_CERTIFIED 0x00000040 -#define DSCAPS_SECONDARYMONO 0x00000100 -#define DSCAPS_SECONDARYSTEREO 0x00000200 -#define DSCAPS_SECONDARY8BIT 0x00000400 -#define DSCAPS_SECONDARY16BIT 0x00000800 - -#define DSSCL_NORMAL 0x00000001 -#define DSSCL_PRIORITY 0x00000002 -#define DSSCL_EXCLUSIVE 0x00000003 -#define DSSCL_WRITEPRIMARY 0x00000004 - -#define DSSPEAKER_DIRECTOUT 0x00000000 -#define DSSPEAKER_HEADPHONE 0x00000001 -#define DSSPEAKER_MONO 0x00000002 -#define DSSPEAKER_QUAD 0x00000003 -#define DSSPEAKER_STEREO 0x00000004 -#define DSSPEAKER_SURROUND 0x00000005 -#define DSSPEAKER_5POINT1 0x00000006 -#define DSSPEAKER_7POINT1 0x00000007 - -#define DSSPEAKER_GEOMETRY_MIN 0x00000005 // 5 degrees -#define DSSPEAKER_GEOMETRY_NARROW 0x0000000A // 10 degrees -#define DSSPEAKER_GEOMETRY_WIDE 0x00000014 // 20 degrees -#define DSSPEAKER_GEOMETRY_MAX 0x000000B4 // 180 degrees - -#define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) -#define DSSPEAKER_CONFIG(a) ((BYTE)(a)) -#define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) - -#define DSBCAPS_PRIMARYBUFFER 0x00000001 -#define DSBCAPS_STATIC 0x00000002 -#define DSBCAPS_LOCHARDWARE 0x00000004 -#define DSBCAPS_LOCSOFTWARE 0x00000008 -#define DSBCAPS_CTRL3D 0x00000010 -#define DSBCAPS_CTRLFREQUENCY 0x00000020 -#define DSBCAPS_CTRLPAN 0x00000040 -#define DSBCAPS_CTRLVOLUME 0x00000080 -#define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 -#define DSBCAPS_CTRLFX 0x00000200 -#define DSBCAPS_STICKYFOCUS 0x00004000 -#define DSBCAPS_GLOBALFOCUS 0x00008000 -#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 -#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 -#define DSBCAPS_LOCDEFER 0x00040000 - -#define DSBPLAY_LOOPING 0x00000001 -#define DSBPLAY_LOCHARDWARE 0x00000002 -#define DSBPLAY_LOCSOFTWARE 0x00000004 -#define DSBPLAY_TERMINATEBY_TIME 0x00000008 -#define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 -#define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 - -#define DSBSTATUS_PLAYING 0x00000001 -#define DSBSTATUS_BUFFERLOST 0x00000002 -#define DSBSTATUS_LOOPING 0x00000004 -#define DSBSTATUS_LOCHARDWARE 0x00000008 -#define DSBSTATUS_LOCSOFTWARE 0x00000010 -#define DSBSTATUS_TERMINATED 0x00000020 - -#define DSBLOCK_FROMWRITECURSOR 0x00000001 -#define DSBLOCK_ENTIREBUFFER 0x00000002 - -#define DSBFREQUENCY_ORIGINAL 0 -#define DSBFREQUENCY_MIN 100 -#if DIRECTSOUND_VERSION >= 0x0900 -#define DSBFREQUENCY_MAX 200000 -#else -#define DSBFREQUENCY_MAX 100000 -#endif - -#define DSBPAN_LEFT -10000 -#define DSBPAN_CENTER 0 -#define DSBPAN_RIGHT 10000 - -#define DSBVOLUME_MIN -10000 -#define DSBVOLUME_MAX 0 - -#define DSBSIZE_MIN 4 -#define DSBSIZE_MAX 0x0FFFFFFF -#define DSBSIZE_FX_MIN 150 // NOTE: Milliseconds, not bytes - -#define DS3DMODE_NORMAL 0x00000000 -#define DS3DMODE_HEADRELATIVE 0x00000001 -#define DS3DMODE_DISABLE 0x00000002 - -#define DS3D_IMMEDIATE 0x00000000 -#define DS3D_DEFERRED 0x00000001 - -#define DS3D_MINDISTANCEFACTOR FLT_MIN -#define DS3D_MAXDISTANCEFACTOR FLT_MAX -#define DS3D_DEFAULTDISTANCEFACTOR 1.0f - -#define DS3D_MINROLLOFFFACTOR 0.0f -#define DS3D_MAXROLLOFFFACTOR 10.0f -#define DS3D_DEFAULTROLLOFFFACTOR 1.0f - -#define DS3D_MINDOPPLERFACTOR 0.0f -#define DS3D_MAXDOPPLERFACTOR 10.0f -#define DS3D_DEFAULTDOPPLERFACTOR 1.0f - -#define DS3D_DEFAULTMINDISTANCE 1.0f -#define DS3D_DEFAULTMAXDISTANCE 1000000000.0f - -#define DS3D_MINCONEANGLE 0 -#define DS3D_MAXCONEANGLE 360 -#define DS3D_DEFAULTCONEANGLE 360 - -#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX - -// IDirectSoundCapture attributes - -#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER -#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED -#define DSCCAPS_MULTIPLECAPTURE 0x00000001 - -// IDirectSoundCaptureBuffer attributes - -#define DSCBCAPS_WAVEMAPPED 0x80000000 - -#if DIRECTSOUND_VERSION >= 0x0800 -#define DSCBCAPS_CTRLFX 0x00000200 -#endif - - -#define DSCBLOCK_ENTIREBUFFER 0x00000001 - -#define DSCBSTATUS_CAPTURING 0x00000001 -#define DSCBSTATUS_LOOPING 0x00000002 - -#define DSCBSTART_LOOPING 0x00000001 - -#define DSBPN_OFFSETSTOP 0xFFFFFFFF - -#define DS_CERTIFIED 0x00000000 -#define DS_UNCERTIFIED 0x00000001 - - -// -// Flags for the I3DL2 effects -// - -// -// I3DL2 Material Presets -// - -enum -{ - DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW, - DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW, - DSFX_I3DL2_MATERIAL_PRESET_THINDOOR, - DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR, - DSFX_I3DL2_MATERIAL_PRESET_WOODWALL, - DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL, - DSFX_I3DL2_MATERIAL_PRESET_STONEWALL, - DSFX_I3DL2_MATERIAL_PRESET_CURTAIN -}; - -#define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f -#define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f -#define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f -#define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f -#define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f -#define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f -#define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f -#define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f - -enum -{ - DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT, - DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC, - DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL, - DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM, - DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE, - DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA, - DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR, - DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY, - DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY, - DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR, - DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY, - DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST, - DSFX_I3DL2_ENVIRONMENT_PRESET_CITY, - DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS, - DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY, - DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN, - DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT, - DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE, - DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER, - DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE -}; - -// -// I3DL2 Reverberation Presets Values -// - -#define I3DL2_ENVIRONMENT_PRESET_DEFAULT -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_GENERIC -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PADDEDCELL -1000,-6000, 0.0f, 0.17f, 0.10f, -1204, 0.001f, 207, 0.002f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ROOM -1000, -454, 0.0f, 0.40f, 0.83f, -1646, 0.002f, 53, 0.003f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_BATHROOM -1000,-1200, 0.0f, 1.49f, 0.54f, -370, 0.007f, 1030, 0.011f, 100.0f, 60.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LIVINGROOM -1000,-6000, 0.0f, 0.50f, 0.10f, -1376, 0.003f, -1104, 0.004f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_STONEROOM -1000, -300, 0.0f, 2.31f, 0.64f, -711, 0.012f, 83, 0.017f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_AUDITORIUM -1000, -476, 0.0f, 4.32f, 0.59f, -789, 0.020f, -289, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CONCERTHALL -1000, -500, 0.0f, 3.92f, 0.70f, -1230, 0.020f, -2, 0.029f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CAVE -1000, 0, 0.0f, 2.91f, 1.30f, -602, 0.015f, -302, 0.022f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ARENA -1000, -698, 0.0f, 7.24f, 0.33f, -1166, 0.020f, 16, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_HANGAR -1000,-1000, 0.0f,10.05f, 0.23f, -602, 0.020f, 198, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY -1000,-4000, 0.0f, 0.30f, 0.10f, -1831, 0.002f, -1630, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_HALLWAY -1000, -300, 0.0f, 1.49f, 0.59f, -1219, 0.007f, 441, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR -1000, -237, 0.0f, 2.70f, 0.79f, -1214, 0.013f, 395, 0.020f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ALLEY -1000, -270, 0.0f, 1.49f, 0.86f, -1204, 0.007f, -4, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_FOREST -1000,-3300, 0.0f, 1.49f, 0.54f, -2560, 0.162f, -613, 0.088f, 79.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CITY -1000, -800, 0.0f, 1.49f, 0.67f, -2273, 0.007f, -2217, 0.011f, 50.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MOUNTAINS -1000,-2500, 0.0f, 1.49f, 0.21f, -2780, 0.300f, -2014, 0.100f, 27.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_QUARRY -1000,-1000, 0.0f, 1.49f, 0.83f,-10000, 0.061f, 500, 0.025f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PLAIN -1000,-2000, 0.0f, 1.49f, 0.50f, -2466, 0.179f, -2514, 0.100f, 21.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PARKINGLOT -1000, 0, 0.0f, 1.65f, 1.50f, -1363, 0.008f, -1153, 0.012f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_SEWERPIPE -1000,-1000, 0.0f, 2.81f, 0.14f, 429, 0.014f, 648, 0.021f, 80.0f, 60.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_UNDERWATER -1000,-4000, 0.0f, 1.49f, 0.10f, -449, 0.007f, 1700, 0.011f, 100.0f, 100.0f, 5000.0f - -// -// Examples simulating 'musical' reverb presets -// -// Name Decay time Description -// Small Room 1.1s A small size room with a length of 5m or so. -// Medium Room 1.3s A medium size room with a length of 10m or so. -// Large Room 1.5s A large size room suitable for live performances. -// Medium Hall 1.8s A medium size concert hall. -// Large Hall 1.8s A large size concert hall suitable for a full orchestra. -// Plate 1.3s A plate reverb simulation. -// - -#define I3DL2_ENVIRONMENT_PRESET_SMALLROOM -1000, -600, 0.0f, 1.10f, 0.83f, -400, 0.005f, 500, 0.010f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM -1000, -600, 0.0f, 1.30f, 0.83f, -1000, 0.010f, -200, 0.020f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LARGEROOM -1000, -600, 0.0f, 1.50f, 0.83f, -1600, 0.020f, -1000, 0.040f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL -1000, -600, 0.0f, 1.80f, 0.70f, -1300, 0.015f, -800, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LARGEHALL -1000, -600, 0.0f, 1.80f, 0.70f, -2000, 0.030f, -1400, 0.060f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PLATE -1000, -200, 0.0f, 1.30f, 0.90f, 0, 0.002f, 0, 0.010f, 100.0f, 75.0f, 5000.0f - -// -// DirectSound3D Algorithms -// - -// Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} -#define DS3DALG_DEFAULT GUID_NULL - -// No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION, 0xc241333f, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - -// High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_HRTF_FULL, 0xc2413340, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - -// Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_HRTF_LIGHT, 0xc2413342, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// DirectSound Internal Effect Algorithms -// - - -// Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} -DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xdafd8210, 0x5711, 0x4b91, 0x9f, 0xe3, 0xf7, 0x5b, 0x7a, 0xe2, 0x79, 0xbf); - -// Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} -DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xefe6629c, 0x81f7, 0x4281, 0xbd, 0x91, 0xc9, 0xd6, 0x04, 0xa9, 0x5a, 0xf6); - -// Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} -DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xefca3d92, 0xdfd8, 0x4672, 0xa6, 0x03, 0x74, 0x20, 0x89, 0x4b, 0xad, 0x98); - -// Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} -DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xef3e932c, 0xd40b, 0x4f51, 0x8c, 0xcf, 0x3f, 0x98, 0xf1, 0xb2, 0x9d, 0x5d); - -// Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} -DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xef114c90, 0xcd1d, 0x484e, 0x96, 0xe5, 0x09, 0xcf, 0xaf, 0x91, 0x2a, 0x21); - -// Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} -DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xef011f79, 0x4000, 0x406d, 0x87, 0xaf, 0xbf, 0xfb, 0x3f, 0xc3, 0x9d, 0x57); - -// Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} -DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120ced89, 0x3bf4, 0x4173, 0xa1, 0x32, 0x3c, 0xb4, 0x06, 0xcf, 0x32, 0x31); - -// I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} -DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xef985e71, 0xd5c7, 0x42d4, 0xba, 0x4d, 0x2d, 0x07, 0x3e, 0x2e, 0x96, 0xf4); - -// Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} -DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87fc0268, 0x9a55, 0x4360, 0x95, 0xaa, 0x00, 0x4a, 0x1d, 0x9d, 0xe2, 0x6c); - -// -// DirectSound Capture Effect Algorithms -// - - -// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} -// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h -DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); - -// Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} -DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xcdebb919, 0x379a, 0x488a, 0x87, 0x65, 0xf5, 0x3c, 0xfd, 0x36, 0xde, 0x40); - -// System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} -DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1c22c56d, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10); - -// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} -// Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h -DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); - -// Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} -DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11c5c73b, 0x66e9, 0x4ba1, 0xa0, 0xba, 0xe8, 0x14, 0xc6, 0xee, 0xd9, 0x2d); - -// System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} -DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5ab0882e, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0); - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -#endif // __DSOUND_INCLUDED__ - - - -#ifdef __cplusplus -}; -#endif // __cplusplus - - diff --git a/mednafen/headless/headless.cpp b/mednafen/headless/headless.cpp new file mode 100644 index 0000000000..06f6277eb3 --- /dev/null +++ b/mednafen/headless/headless.cpp @@ -0,0 +1,17 @@ +#include "mednafen.h" +#include "headless.h" + +int MDFNnetplay = 0; +void MDFND_NetplayText(const uint8* buf, bool something) {} +void MDFND_NetworkClose(void) {} +bool MDFNI_DumpSettingsDef(char const *) { return false; } + +uint32 MDFND_GetTime(void) { return (uint32)0xFFFFFFFF; } +void MDFND_DispMessage(UTF8 *text) +{ + printf("%s",text); +} + +void LockGameMutex(bool lock) +{ +} \ No newline at end of file diff --git a/mednafen/headless/headless.h b/mednafen/headless/headless.h new file mode 100644 index 0000000000..68cefe6a5b --- /dev/null +++ b/mednafen/headless/headless.h @@ -0,0 +1,26 @@ +#ifndef _HEADLESS_H +#define _HEADLESS_H + +//make sure this file gets included by everything +//configurations related to headlessness shall be in here + +#ifdef HEADLESS + +#else + +//headless features are enabled +#define WANT_MOVIE +#define WANT_AVDUMP +#define WANT_NETPLAY +#define WANT_AVDUMP +#define WANT_REWIND +#define WANT_DEARCHIVE +#define WANT_IPS + +#define WANT_PSF +#define WANT_SOFTGUI +#define WANT_CDIF_MT + +#endif + +#endif \ No newline at end of file diff --git a/mednafen/headless/netplay_stub.cpp b/mednafen/headless/netplay_stub.cpp deleted file mode 100644 index 4718d90170..0000000000 --- a/mednafen/headless/netplay_stub.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "mednafen.h" - -int MDFNnetplay = 0; -void MDFND_NetplayText(const uint8* buf, bool something) {} -void MDFND_NetworkClose(void) {} -bool MDFNI_DumpSettingsDef(char const *) { return false; } \ No newline at end of file diff --git a/mednafen/libmednahawk/libmednahawk.cpp b/mednafen/libmednahawk/libmednahawk.cpp index 89dc8f684b..627507ba8f 100644 --- a/mednafen/libmednahawk/libmednahawk.cpp +++ b/mednafen/libmednahawk/libmednahawk.cpp @@ -1,5 +1,4 @@ #include "mednafen.h" -#include "SDL.h" #include #include @@ -9,9 +8,21 @@ #include "settings-driver.h" #include "FileWrapper.h" +MDFNGI *CurGame=NULL; + extern MDFNGI EmulatedPSX; void BuildPortsInfo(MDFNGI *gi); +void MDFND_PrintError(const char *s) +{ + printf(s); +} + +void MDFND_Message(const char *s) +{ + printf(s); +} + static MDFNSetting MednafenSettings[] = { { "filesys.untrusted_fip_check", MDFNSF_NOFLAGS, gettext_noop("Enable untrusted file-inclusion path security check."), gettext_noop("When this setting is set to \"1\", the default, paths to files referenced from files like CUE sheets and PSF rips are checked for certain characters that can be used in directory traversal, and if found, loading is aborted. Set it to \"0\" if you want to allow constructs like absolute paths in CUE sheets, but only if you understand the security implications of doing so(see \"Security Issues\" section in the documentation)."), MDFNST_BOOL, "0" }, @@ -55,7 +66,7 @@ void FrameAdvance() espec.LineWidths = (MDFN_Rect *)VTLineWidths[VTBackBuffer]; espec.skip = false; espec.soundmultiplier = 1.0; - espec.NeedRewind = DNeedRewind; + espec.NeedRewind = false; //espec.SoundRate = GetSoundRate(); //espec.SoundBuf = GetEmuModSoundBuffer(&espec.SoundBufMaxSize); @@ -136,7 +147,7 @@ extern "C" __declspec(dllexport) bool psx_LoadCue(const char* path) MDFNGI *gi = CurGame = MDFNI_LoadCD("psx", path); //does some kind of input hooking-up - BuildPortsInfo(gi); + //BuildPortsInfo(gi); return true; } @@ -163,7 +174,7 @@ extern "C" __declspec(dllexport) bool dll_Initialize() //prep settings. for now we reuse a lot of mednafen's internal settings building. i would prefer to have supported settings enumerated in here static std::vector NeoDriverSettings; //these better be static or else shit will explode - MakeInputSettings(NeoDriverSettings); + //MakeInputSettings(NeoDriverSettings); MDFN_MergeSettings(NeoDriverSettings); MDFN_MergeSettings(MednafenSettings); @@ -176,7 +187,7 @@ extern "C" __declspec(dllexport) bool dll_Initialize() return true; } - + //--------- diff --git a/mednafen/libmednahawk/libmednahawk.vcxproj b/mednafen/libmednahawk/libmednahawk.vcxproj index 4080acf6a3..7eacb9c448 100644 --- a/mednafen/libmednahawk/libmednahawk.vcxproj +++ b/mednafen/libmednahawk/libmednahawk.vcxproj @@ -72,8 +72,8 @@ Disabled - .;..\src;..\include;..\zlib123;..\sdl\include;..\dx;%(AdditionalIncludeDirectories) - HEADLESS;WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + .;..\src;..\include;..\zlib123;%(AdditionalIncludeDirectories) + WANT_PSF;HEADLESS;WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) false EnableFastChecks MultiThreadedDebugDLL @@ -85,7 +85,7 @@ true - ..\zlib123/zlib-vc8-Win32.lib;..\sdl/sdl-vc8-win32.lib;winmm.lib;..\dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + ..\zlib123/zlib-vc8-Win32.lib;winmm.lib;%(AdditionalDependencies) true Console MachineX86 @@ -95,8 +95,8 @@ /MP %(AdditionalOptions) - .;..\src;..\include;..\zlib123;..\sdl\include;..\dx;%(AdditionalIncludeDirectories) - HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + .;..\src;..\include;..\zlib123;%(AdditionalIncludeDirectories) + WANT_PSF;HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL 1Byte @@ -112,7 +112,7 @@ true - ..\zlib123/zlib-vc8-Win32.lib;..\sdl/sdl-vc8-win32.lib;winmm.lib;..\dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + ..\zlib123/zlib-vc8-Win32.lib;winmm.lib;%(AdditionalDependencies) true Console true @@ -125,8 +125,8 @@ /MP %(AdditionalOptions) Full false - .;..\src;..\include;..\zlib123;..\sdl\include;..\dx;%(AdditionalIncludeDirectories) - HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + .;..\src;..\include;..\zlib123;%(AdditionalIncludeDirectories) + WANT_PSF;HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL 1Byte StreamingSIMDExtensions2 @@ -140,7 +140,7 @@ Speed - ..\zlib123/zlib-vc8-Win32.lib;..\sdl/sdl-vc8-win32.lib;winmm.lib;..\dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + ..\zlib123/zlib-vc8-Win32.lib;winmm.lib;%(AdditionalDependencies) true Console true @@ -151,8 +151,7 @@ - - + $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc @@ -161,7 +160,10 @@ $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc + + + @@ -174,10 +176,8 @@ - - @@ -237,36 +237,17 @@ - - - - - - - - - - false - false - - - - - - false - false - $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc @@ -275,30 +256,15 @@ $(IntDir)%(Filename)1.obj $(IntDir)%(Filename)1.xdc - - - $(IntDir)%(Filename)1.obj - $(IntDir)%(Filename)1.xdc - $(IntDir)%(Filename)1.obj - $(IntDir)%(Filename)1.xdc - $(IntDir)%(Filename)1.obj - $(IntDir)%(Filename)1.xdc - - - - - - - true @@ -316,9 +282,14 @@ + + + + + @@ -331,11 +302,8 @@ - - - @@ -344,6 +312,7 @@ + @@ -393,38 +362,16 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -448,4 +395,4 @@ - + \ No newline at end of file diff --git a/mednafen/libmednahawk/libmednahawk.vcxproj.filters b/mednafen/libmednahawk/libmednahawk.vcxproj.filters index a739c05977..f4d092a54d 100644 --- a/mednafen/libmednahawk/libmednahawk.vcxproj.filters +++ b/mednafen/libmednahawk/libmednahawk.vcxproj.filters @@ -28,9 +28,6 @@ {5c139355-d298-4dc7-8eaf-4d01f15e4638} - - {b02120a5-aefd-4df6-b1c6-0351f7cdf4a5} - {026374fb-8a2c-4f3c-8c60-eae8c3382fa2} @@ -40,26 +37,23 @@ {2d6ec477-c745-4d13-9e64-8c0483c2749d} - - {5791d772-b7d9-42dc-966b-5c9ff4ca7683} - - - {91179346-9375-4427-8630-122e086273dd} - - - {a3e7626e-55bc-4387-b374-de3b4c608880} - {f36488fc-db6a-4348-84ad-94128fb86fbf} {2097105e-a7b2-4499-a0b7-4b486470c6b6} + + {5791d772-b7d9-42dc-966b-5c9ff4ca7683} + + + {91179346-9375-4427-8630-122e086273dd} + + + {a3e7626e-55bc-4387-b374-de3b4c608880} + - - src - src @@ -99,18 +93,9 @@ src - - src - - - src - src - - src - src @@ -252,9 +237,6 @@ src\video - - src\video - src\video @@ -273,24 +255,9 @@ src\drivers - - src\drivers - - - src\drivers - src\drivers - - src\drivers - - - src\drivers - - - src\drivers - src\drivers @@ -303,33 +270,12 @@ src\drivers - - src\drivers - - - src\drivers - - - src\drivers - - - src\drivers - src\drivers src\drivers - - src\drivers - - - src\drivers - - - src\drivers - src\drivers @@ -342,18 +288,9 @@ src\drivers - - src\drivers - src\drivers - - src\drivers - - - src\drivers - src\sound @@ -369,21 +306,6 @@ src\sound - - src\compress - - - src\compress - - - src\compress - - - src\compress - - - src\compress - src\string @@ -396,23 +318,20 @@ src\sexyal - - src\sexyal\drivers - src\sexyal\drivers - src\hw_cpu\c68k + src\drivers\hw_cpu\c68k - src\hw_cpu\c68k + src\drivers\hw_cpu\c68k - src\hw_cpu\z80-fuse + src\drivers\hw_cpu\z80-fuse - src\hw_cpu\z80-fuse + src\drivers\hw_cpu\z80-fuse src\desa68 @@ -421,9 +340,24 @@ src\drivers - + headless + + src + + + src\video + + + src\drivers + + + src\drivers + + + src\drivers + @@ -468,21 +402,9 @@ src - - src - - - src - - - src - src - - src - src @@ -642,9 +564,6 @@ src\video - - src\video - src\video @@ -654,57 +573,21 @@ src\drivers - - src\drivers - - - src\drivers - src\drivers - - src\drivers - - - src\drivers - - - src\drivers - src\drivers - - src\drivers - src\drivers - - src\drivers - - - src\drivers - - - src\drivers - src\drivers src\drivers - - src\drivers - - - src\drivers - - - src\drivers - src\drivers @@ -714,42 +597,12 @@ src\drivers - - src\drivers - src\drivers - - src\drivers - - - src\drivers - src\sound - - src\compress - - - src\compress - - - src\compress - - - src\compress - - - src\compress - - - src\compress - - - src\compress - src\string @@ -763,10 +616,10 @@ src\sexyal - src\hw_cpu\c68k + src\drivers\hw_cpu\c68k - src\hw_cpu\z80-fuse + src\drivers\hw_cpu\z80-fuse src\desa68 @@ -776,6 +629,28 @@ src\drivers + + src + + + headless + + + src + + + src\video + + + src\drivers + + + src\drivers + + + src\drivers + + @@ -791,4 +666,4 @@ src\psx - + \ No newline at end of file diff --git a/mednafen/sdl/include/SDL.h b/mednafen/sdl/include/SDL.h deleted file mode 100644 index 0e7b50d65b..0000000000 --- a/mednafen/sdl/include/SDL.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL.h - * Main include header for the SDL library - */ - -#ifndef _SDL_H -#define _SDL_H - -#include "SDL_main.h" -#include "SDL_stdinc.h" -#include "SDL_audio.h" -#include "SDL_cdrom.h" -#include "SDL_cpuinfo.h" -#include "SDL_endian.h" -#include "SDL_error.h" -#include "SDL_events.h" -#include "SDL_loadso.h" -#include "SDL_mutex.h" -#include "SDL_rwops.h" -#include "SDL_thread.h" -#include "SDL_timer.h" -#include "SDL_video.h" -#include "SDL_version.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @file SDL.h - * @note As of version 0.5, SDL is loaded dynamically into the application - */ - -/** @name SDL_INIT Flags - * These are the flags which may be passed to SDL_Init() -- you should - * specify the subsystems which you will be using in your application. - */ -/*@{*/ -#define SDL_INIT_TIMER 0x00000001 -#define SDL_INIT_AUDIO 0x00000010 -#define SDL_INIT_VIDEO 0x00000020 -#define SDL_INIT_CDROM 0x00000100 -#define SDL_INIT_JOYSTICK 0x00000200 -#define SDL_INIT_NOPARACHUTE 0x00100000 /**< Don't catch fatal signals */ -#define SDL_INIT_EVENTTHREAD 0x01000000 /**< Not supported on all OS's */ -#define SDL_INIT_EVERYTHING 0x0000FFFF -/*@}*/ - -/** This function loads the SDL dynamically linked library and initializes - * the subsystems specified by 'flags' (and those satisfying dependencies) - * Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup - * signal handlers for some commonly ignored fatal signals (like SIGSEGV) - */ -extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); - -/** This function initializes specific SDL subsystems */ -extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); - -/** This function cleans up specific SDL subsystems */ -extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); - -/** This function returns mask of the specified subsystems which have - * been initialized. - * If 'flags' is 0, it returns a mask of all initialized subsystems. - */ -extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); - -/** This function cleans up all initialized subsystems and unloads the - * dynamically linked library. You should call it upon all exit conditions. - */ -extern DECLSPEC void SDLCALL SDL_Quit(void); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_H */ diff --git a/mednafen/sdl/include/SDL_active.h b/mednafen/sdl/include/SDL_active.h deleted file mode 100644 index bebfc8c44d..0000000000 --- a/mednafen/sdl/include/SDL_active.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_active.h - * Include file for SDL application focus event handling - */ - -#ifndef _SDL_active_h -#define _SDL_active_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @name The available application states */ -/*@{*/ -#define SDL_APPMOUSEFOCUS 0x01 /**< The app has mouse coverage */ -#define SDL_APPINPUTFOCUS 0x02 /**< The app has input focus */ -#define SDL_APPACTIVE 0x04 /**< The application is active */ -/*@}*/ - -/* Function prototypes */ -/** - * This function returns the current state of the application, which is a - * bitwise combination of SDL_APPMOUSEFOCUS, SDL_APPINPUTFOCUS, and - * SDL_APPACTIVE. If SDL_APPACTIVE is set, then the user is able to - * see your application, otherwise it has been iconified or disabled. - */ -extern DECLSPEC Uint8 SDLCALL SDL_GetAppState(void); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_active_h */ diff --git a/mednafen/sdl/include/SDL_audio.h b/mednafen/sdl/include/SDL_audio.h deleted file mode 100644 index f2eb335639..0000000000 --- a/mednafen/sdl/include/SDL_audio.h +++ /dev/null @@ -1,284 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_audio.h - * Access to the raw audio mixing buffer for the SDL library - */ - -#ifndef _SDL_audio_h -#define _SDL_audio_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_endian.h" -#include "SDL_mutex.h" -#include "SDL_thread.h" -#include "SDL_rwops.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * When filling in the desired audio spec structure, - * - 'desired->freq' should be the desired audio frequency in samples-per-second. - * - 'desired->format' should be the desired audio format. - * - 'desired->samples' is the desired size of the audio buffer, in samples. - * This number should be a power of two, and may be adjusted by the audio - * driver to a value more suitable for the hardware. Good values seem to - * range between 512 and 8096 inclusive, depending on the application and - * CPU speed. Smaller values yield faster response time, but can lead - * to underflow if the application is doing heavy processing and cannot - * fill the audio buffer in time. A stereo sample consists of both right - * and left channels in LR ordering. - * Note that the number of samples is directly related to time by the - * following formula: ms = (samples*1000)/freq - * - 'desired->size' is the size in bytes of the audio buffer, and is - * calculated by SDL_OpenAudio(). - * - 'desired->silence' is the value used to set the buffer to silence, - * and is calculated by SDL_OpenAudio(). - * - 'desired->callback' should be set to a function that will be called - * when the audio device is ready for more data. It is passed a pointer - * to the audio buffer, and the length in bytes of the audio buffer. - * This function usually runs in a separate thread, and so you should - * protect data structures that it accesses by calling SDL_LockAudio() - * and SDL_UnlockAudio() in your code. - * - 'desired->userdata' is passed as the first parameter to your callback - * function. - * - * @note The calculated values in this structure are calculated by SDL_OpenAudio() - * - */ -typedef struct SDL_AudioSpec { - int freq; /**< DSP frequency -- samples per second */ - Uint16 format; /**< Audio data format */ - Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ - Uint8 silence; /**< Audio buffer silence value (calculated) */ - Uint16 samples; /**< Audio buffer size in samples (power of 2) */ - Uint16 padding; /**< Necessary for some compile environments */ - Uint32 size; /**< Audio buffer size in bytes (calculated) */ - /** - * This function is called when the audio device needs more data. - * - * @param[out] stream A pointer to the audio data buffer - * @param[in] len The length of the audio buffer in bytes. - * - * Once the callback returns, the buffer will no longer be valid. - * Stereo samples are stored in a LRLRLR ordering. - */ - void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); - void *userdata; -} SDL_AudioSpec; - -/** - * @name Audio format flags - * defaults to LSB byte order - */ -/*@{*/ -#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ -#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ -#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ -#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ -#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ -#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ -#define AUDIO_U16 AUDIO_U16LSB -#define AUDIO_S16 AUDIO_S16LSB - -/** - * @name Native audio byte ordering - */ -/*@{*/ -#if SDL_BYTEORDER == SDL_LIL_ENDIAN -#define AUDIO_U16SYS AUDIO_U16LSB -#define AUDIO_S16SYS AUDIO_S16LSB -#else -#define AUDIO_U16SYS AUDIO_U16MSB -#define AUDIO_S16SYS AUDIO_S16MSB -#endif -/*@}*/ - -/*@}*/ - - -/** A structure to hold a set of audio conversion filters and buffers */ -typedef struct SDL_AudioCVT { - int needed; /**< Set to 1 if conversion possible */ - Uint16 src_format; /**< Source audio format */ - Uint16 dst_format; /**< Target audio format */ - double rate_incr; /**< Rate conversion increment */ - Uint8 *buf; /**< Buffer to hold entire audio data */ - int len; /**< Length of original audio buffer */ - int len_cvt; /**< Length of converted audio buffer */ - int len_mult; /**< buffer must be len*len_mult big */ - double len_ratio; /**< Given len, final size is len*len_ratio */ - void (SDLCALL *filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); - int filter_index; /**< Current audio conversion function */ -} SDL_AudioCVT; - - -/* Function prototypes */ - -/** - * @name Audio Init and Quit - * These functions are used internally, and should not be used unless you - * have a specific need to specify the audio driver you want to use. - * You should normally use SDL_Init() or SDL_InitSubSystem(). - */ -/*@{*/ -extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); -extern DECLSPEC void SDLCALL SDL_AudioQuit(void); -/*@}*/ - -/** - * This function fills the given character buffer with the name of the - * current audio driver, and returns a pointer to it if the audio driver has - * been initialized. It returns NULL if no driver has been initialized. - */ -extern DECLSPEC char * SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen); - -/** - * This function opens the audio device with the desired parameters, and - * returns 0 if successful, placing the actual hardware parameters in the - * structure pointed to by 'obtained'. If 'obtained' is NULL, the audio - * data passed to the callback function will be guaranteed to be in the - * requested format, and will be automatically converted to the hardware - * audio format if necessary. This function returns -1 if it failed - * to open the audio device, or couldn't set up the audio thread. - * - * The audio device starts out playing silence when it's opened, and should - * be enabled for playing by calling SDL_PauseAudio(0) when you are ready - * for your audio callback function to be called. Since the audio driver - * may modify the requested size of the audio buffer, you should allocate - * any local mixing buffers after you open the audio device. - * - * @sa SDL_AudioSpec - */ -extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); - -typedef enum { - SDL_AUDIO_STOPPED = 0, - SDL_AUDIO_PLAYING, - SDL_AUDIO_PAUSED -} SDL_audiostatus; - -/** Get the current audio state */ -extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void); - -/** - * This function pauses and unpauses the audio callback processing. - * It should be called with a parameter of 0 after opening the audio - * device to start playing sound. This is so you can safely initialize - * data for your callback function after opening the audio device. - * Silence will be written to the audio device during the pause. - */ -extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); - -/** - * This function loads a WAVE from the data source, automatically freeing - * that source if 'freesrc' is non-zero. For example, to load a WAVE file, - * you could do: - * @code SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); @endcode - * - * If this function succeeds, it returns the given SDL_AudioSpec, - * filled with the audio data format of the wave data, and sets - * 'audio_buf' to a malloc()'d buffer containing the audio data, - * and sets 'audio_len' to the length of that audio buffer, in bytes. - * You need to free the audio buffer with SDL_FreeWAV() when you are - * done with it. - * - * This function returns NULL and sets the SDL error message if the - * wave file cannot be opened, uses an unknown data format, or is - * corrupt. Currently raw and MS-ADPCM WAVE files are supported. - */ -extern DECLSPEC SDL_AudioSpec * SDLCALL SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); - -/** Compatibility convenience function -- loads a WAV from a file */ -#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ - SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) - -/** - * This function frees data previously allocated with SDL_LoadWAV_RW() - */ -extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 *audio_buf); - -/** - * This function takes a source format and rate and a destination format - * and rate, and initializes the 'cvt' structure with information needed - * by SDL_ConvertAudio() to convert a buffer of audio data from one format - * to the other. - * - * @return This function returns 0, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT *cvt, - Uint16 src_format, Uint8 src_channels, int src_rate, - Uint16 dst_format, Uint8 dst_channels, int dst_rate); - -/** - * Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(), - * created an audio buffer cvt->buf, and filled it with cvt->len bytes of - * audio data in the source format, this function will convert it in-place - * to the desired format. - * The data conversion may expand the size of the audio data, so the buffer - * cvt->buf should be allocated after the cvt structure is initialized by - * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long. - */ -extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT *cvt); - - -#define SDL_MIX_MAXVOLUME 128 -/** - * This takes two audio buffers of the playing audio format and mixes - * them, performing addition, volume adjustment, and overflow clipping. - * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME - * for full audio volume. Note this does not change hardware volume. - * This is provided for convenience -- you can mix your own audio data. - */ -extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume); - -/** - * @name Audio Locks - * The lock manipulated by these functions protects the callback function. - * During a LockAudio/UnlockAudio pair, you can be guaranteed that the - * callback function is not running. Do not call these from the callback - * function or you will cause deadlock. - */ -/*@{*/ -extern DECLSPEC void SDLCALL SDL_LockAudio(void); -extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); -/*@}*/ - -/** - * This function shuts down audio processing and closes the audio device. - */ -extern DECLSPEC void SDLCALL SDL_CloseAudio(void); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_audio_h */ diff --git a/mednafen/sdl/include/SDL_byteorder.h b/mednafen/sdl/include/SDL_byteorder.h deleted file mode 100644 index 5202c661eb..0000000000 --- a/mednafen/sdl/include/SDL_byteorder.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_byteorder.h - * @deprecated Use SDL_endian.h instead - */ - -/* DEPRECATED */ -#include "SDL_endian.h" diff --git a/mednafen/sdl/include/SDL_cdrom.h b/mednafen/sdl/include/SDL_cdrom.h deleted file mode 100644 index 47d8266676..0000000000 --- a/mednafen/sdl/include/SDL_cdrom.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_cdrom.h - * This is the CD-audio control API for Simple DirectMedia Layer - */ - -#ifndef _SDL_cdrom_h -#define _SDL_cdrom_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file SDL_cdrom.h - * In order to use these functions, SDL_Init() must have been called - * with the SDL_INIT_CDROM flag. This causes SDL to scan the system - * for CD-ROM drives, and load appropriate drivers. - */ - -/** The maximum number of CD-ROM tracks on a disk */ -#define SDL_MAX_TRACKS 99 - -/** @name Track Types - * The types of CD-ROM track possible - */ -/*@{*/ -#define SDL_AUDIO_TRACK 0x00 -#define SDL_DATA_TRACK 0x04 -/*@}*/ - -/** The possible states which a CD-ROM drive can be in. */ -typedef enum { - CD_TRAYEMPTY, - CD_STOPPED, - CD_PLAYING, - CD_PAUSED, - CD_ERROR = -1 -} CDstatus; - -/** Given a status, returns true if there's a disk in the drive */ -#define CD_INDRIVE(status) ((int)(status) > 0) - -typedef struct SDL_CDtrack { - Uint8 id; /**< Track number */ - Uint8 type; /**< Data or audio track */ - Uint16 unused; - Uint32 length; /**< Length, in frames, of this track */ - Uint32 offset; /**< Offset, in frames, from start of disk */ -} SDL_CDtrack; - -/** This structure is only current as of the last call to SDL_CDStatus() */ -typedef struct SDL_CD { - int id; /**< Private drive identifier */ - CDstatus status; /**< Current drive status */ - - /** The rest of this structure is only valid if there's a CD in drive */ - /*@{*/ - int numtracks; /**< Number of tracks on disk */ - int cur_track; /**< Current track position */ - int cur_frame; /**< Current frame offset within current track */ - SDL_CDtrack track[SDL_MAX_TRACKS+1]; - /*@}*/ -} SDL_CD; - -/** @name Frames / MSF Conversion Functions - * Conversion functions from frames to Minute/Second/Frames and vice versa - */ -/*@{*/ -#define CD_FPS 75 -#define FRAMES_TO_MSF(f, M,S,F) { \ - int value = f; \ - *(F) = value%CD_FPS; \ - value /= CD_FPS; \ - *(S) = value%60; \ - value /= 60; \ - *(M) = value; \ -} -#define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) -/*@}*/ - -/* CD-audio API functions: */ - -/** - * Returns the number of CD-ROM drives on the system, or -1 if - * SDL_Init() has not been called with the SDL_INIT_CDROM flag. - */ -extern DECLSPEC int SDLCALL SDL_CDNumDrives(void); - -/** - * Returns a human-readable, system-dependent identifier for the CD-ROM. - * Example: - * - "/dev/cdrom" - * - "E:" - * - "/dev/disk/ide/1/master" - */ -extern DECLSPEC const char * SDLCALL SDL_CDName(int drive); - -/** - * Opens a CD-ROM drive for access. It returns a drive handle on success, - * or NULL if the drive was invalid or busy. This newly opened CD-ROM - * becomes the default CD used when other CD functions are passed a NULL - * CD-ROM handle. - * Drives are numbered starting with 0. Drive 0 is the system default CD-ROM. - */ -extern DECLSPEC SDL_CD * SDLCALL SDL_CDOpen(int drive); - -/** - * This function returns the current status of the given drive. - * If the drive has a CD in it, the table of contents of the CD and current - * play position of the CD will be stored in the SDL_CD structure. - */ -extern DECLSPEC CDstatus SDLCALL SDL_CDStatus(SDL_CD *cdrom); - -/** - * Play the given CD starting at 'start_track' and 'start_frame' for 'ntracks' - * tracks and 'nframes' frames. If both 'ntrack' and 'nframe' are 0, play - * until the end of the CD. This function will skip data tracks. - * This function should only be called after calling SDL_CDStatus() to - * get track information about the CD. - * For example: - * @code - * // Play entire CD: - * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) - * SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); - * // Play last track: - * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { - * SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); - * } - * // Play first and second track and 10 seconds of third track: - * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) - * SDL_CDPlayTracks(cdrom, 0, 0, 2, 10); - * @endcode - * - * @return This function returns 0, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_CDPlayTracks(SDL_CD *cdrom, - int start_track, int start_frame, int ntracks, int nframes); - -/** - * Play the given CD starting at 'start' frame for 'length' frames. - * @return It returns 0, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_CDPlay(SDL_CD *cdrom, int start, int length); - -/** Pause play - * @return returns 0, or -1 on error - */ -extern DECLSPEC int SDLCALL SDL_CDPause(SDL_CD *cdrom); - -/** Resume play - * @return returns 0, or -1 on error - */ -extern DECLSPEC int SDLCALL SDL_CDResume(SDL_CD *cdrom); - -/** Stop play - * @return returns 0, or -1 on error - */ -extern DECLSPEC int SDLCALL SDL_CDStop(SDL_CD *cdrom); - -/** Eject CD-ROM - * @return returns 0, or -1 on error - */ -extern DECLSPEC int SDLCALL SDL_CDEject(SDL_CD *cdrom); - -/** Closes the handle for the CD-ROM drive */ -extern DECLSPEC void SDLCALL SDL_CDClose(SDL_CD *cdrom); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_video_h */ diff --git a/mednafen/sdl/include/SDL_config.h b/mednafen/sdl/include/SDL_config.h deleted file mode 100644 index 06f41a8d47..0000000000 --- a/mednafen/sdl/include/SDL_config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_h -#define _SDL_config_h - -#include "SDL_platform.h" - -/* Add any platform that doesn't build using the configure system */ -#if defined(__DREAMCAST__) -#include "SDL_config_dreamcast.h" -#elif defined(__MACOS__) -#include "SDL_config_macos.h" -#elif defined(__MACOSX__) -#include "SDL_config_macosx.h" -#elif defined(__SYMBIAN32__) -#include "SDL_config_symbian.h" /* must be before win32! */ -#elif defined(__WIN32__) -#include "SDL_config_win32.h" -#elif defined(__OS2__) -#include "SDL_config_os2.h" -#else -#include "SDL_config_minimal.h" -#endif /* platform config */ - -#endif /* _SDL_config_h */ diff --git a/mednafen/sdl/include/SDL_config.h.default b/mednafen/sdl/include/SDL_config.h.default deleted file mode 100644 index 06f41a8d47..0000000000 --- a/mednafen/sdl/include/SDL_config.h.default +++ /dev/null @@ -1,45 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_h -#define _SDL_config_h - -#include "SDL_platform.h" - -/* Add any platform that doesn't build using the configure system */ -#if defined(__DREAMCAST__) -#include "SDL_config_dreamcast.h" -#elif defined(__MACOS__) -#include "SDL_config_macos.h" -#elif defined(__MACOSX__) -#include "SDL_config_macosx.h" -#elif defined(__SYMBIAN32__) -#include "SDL_config_symbian.h" /* must be before win32! */ -#elif defined(__WIN32__) -#include "SDL_config_win32.h" -#elif defined(__OS2__) -#include "SDL_config_os2.h" -#else -#include "SDL_config_minimal.h" -#endif /* platform config */ - -#endif /* _SDL_config_h */ diff --git a/mednafen/sdl/include/SDL_config.h.in b/mednafen/sdl/include/SDL_config.h.in deleted file mode 100644 index 5f62b97145..0000000000 --- a/mednafen/sdl/include/SDL_config.h.in +++ /dev/null @@ -1,310 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_h -#define _SDL_config_h - -/* This is a set of defines to configure the SDL features */ - -/* General platform specific identifiers */ -#include "SDL_platform.h" - -/* Make sure that this isn't included by Visual C++ */ -#ifdef _MSC_VER -#error You should copy include/SDL_config.h.default to include/SDL_config.h -#endif - -/* C language features */ -#undef const -#undef inline -#undef volatile - -/* C datatypes */ -#undef size_t -#undef int8_t -#undef uint8_t -#undef int16_t -#undef uint16_t -#undef int32_t -#undef uint32_t -#undef int64_t -#undef uint64_t -#undef uintptr_t -#undef SDL_HAS_64BIT_TYPE - -/* Endianness */ -#undef SDL_BYTEORDER - -/* Comment this if you want to build without any C library requirements */ -#undef HAVE_LIBC -#if HAVE_LIBC - -/* Useful headers */ -#undef HAVE_ALLOCA_H -#undef HAVE_SYS_TYPES_H -#undef HAVE_STDIO_H -#undef STDC_HEADERS -#undef HAVE_STDLIB_H -#undef HAVE_STDARG_H -#undef HAVE_MALLOC_H -#undef HAVE_MEMORY_H -#undef HAVE_STRING_H -#undef HAVE_STRINGS_H -#undef HAVE_INTTYPES_H -#undef HAVE_STDINT_H -#undef HAVE_CTYPE_H -#undef HAVE_MATH_H -#undef HAVE_ICONV_H -#undef HAVE_SIGNAL_H -#undef HAVE_ALTIVEC_H - -/* C library functions */ -#undef HAVE_MALLOC -#undef HAVE_CALLOC -#undef HAVE_REALLOC -#undef HAVE_FREE -#undef HAVE_ALLOCA -#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ -#undef HAVE_GETENV -#undef HAVE_PUTENV -#undef HAVE_UNSETENV -#endif -#undef HAVE_QSORT -#undef HAVE_ABS -#undef HAVE_BCOPY -#undef HAVE_MEMSET -#undef HAVE_MEMCPY -#undef HAVE_MEMMOVE -#undef HAVE_MEMCMP -#undef HAVE_STRLEN -#undef HAVE_STRLCPY -#undef HAVE_STRLCAT -#undef HAVE_STRDUP -#undef HAVE__STRREV -#undef HAVE__STRUPR -#undef HAVE__STRLWR -#undef HAVE_INDEX -#undef HAVE_RINDEX -#undef HAVE_STRCHR -#undef HAVE_STRRCHR -#undef HAVE_STRSTR -#undef HAVE_ITOA -#undef HAVE__LTOA -#undef HAVE__UITOA -#undef HAVE__ULTOA -#undef HAVE_STRTOL -#undef HAVE_STRTOUL -#undef HAVE__I64TOA -#undef HAVE__UI64TOA -#undef HAVE_STRTOLL -#undef HAVE_STRTOULL -#undef HAVE_STRTOD -#undef HAVE_ATOI -#undef HAVE_ATOF -#undef HAVE_STRCMP -#undef HAVE_STRNCMP -#undef HAVE__STRICMP -#undef HAVE_STRCASECMP -#undef HAVE__STRNICMP -#undef HAVE_STRNCASECMP -#undef HAVE_SSCANF -#undef HAVE_SNPRINTF -#undef HAVE_VSNPRINTF -#undef HAVE_ICONV -#undef HAVE_SIGACTION -#undef HAVE_SETJMP -#undef HAVE_NANOSLEEP -#undef HAVE_CLOCK_GETTIME -#undef HAVE_GETPAGESIZE -#undef HAVE_MPROTECT - -#else -/* We may need some replacement for stdarg.h here */ -#include -#endif /* HAVE_LIBC */ - -/* Allow disabling of core subsystems */ -#undef SDL_AUDIO_DISABLED -#undef SDL_CDROM_DISABLED -#undef SDL_CPUINFO_DISABLED -#undef SDL_EVENTS_DISABLED -#undef SDL_FILE_DISABLED -#undef SDL_JOYSTICK_DISABLED -#undef SDL_LOADSO_DISABLED -#undef SDL_THREADS_DISABLED -#undef SDL_TIMERS_DISABLED -#undef SDL_VIDEO_DISABLED - -/* Enable various audio drivers */ -#undef SDL_AUDIO_DRIVER_ALSA -#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC -#undef SDL_AUDIO_DRIVER_ARTS -#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC -#undef SDL_AUDIO_DRIVER_BAUDIO -#undef SDL_AUDIO_DRIVER_BSD -#undef SDL_AUDIO_DRIVER_COREAUDIO -#undef SDL_AUDIO_DRIVER_DART -#undef SDL_AUDIO_DRIVER_DC -#undef SDL_AUDIO_DRIVER_DISK -#undef SDL_AUDIO_DRIVER_DUMMY -#undef SDL_AUDIO_DRIVER_DMEDIA -#undef SDL_AUDIO_DRIVER_DSOUND -#undef SDL_AUDIO_DRIVER_PULSE -#undef SDL_AUDIO_DRIVER_PULSE_DYNAMIC -#undef SDL_AUDIO_DRIVER_ESD -#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC -#undef SDL_AUDIO_DRIVER_MINT -#undef SDL_AUDIO_DRIVER_MMEAUDIO -#undef SDL_AUDIO_DRIVER_NAS -#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC -#undef SDL_AUDIO_DRIVER_OSS -#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H -#undef SDL_AUDIO_DRIVER_PAUD -#undef SDL_AUDIO_DRIVER_QNXNTO -#undef SDL_AUDIO_DRIVER_SNDMGR -#undef SDL_AUDIO_DRIVER_SUNAUDIO -#undef SDL_AUDIO_DRIVER_WAVEOUT - -/* Enable various cdrom drivers */ -#undef SDL_CDROM_AIX -#undef SDL_CDROM_BEOS -#undef SDL_CDROM_BSDI -#undef SDL_CDROM_DC -#undef SDL_CDROM_DUMMY -#undef SDL_CDROM_FREEBSD -#undef SDL_CDROM_LINUX -#undef SDL_CDROM_MACOS -#undef SDL_CDROM_MACOSX -#undef SDL_CDROM_MINT -#undef SDL_CDROM_OPENBSD -#undef SDL_CDROM_OS2 -#undef SDL_CDROM_OSF -#undef SDL_CDROM_QNX -#undef SDL_CDROM_WIN32 - -/* Enable various input drivers */ -#undef SDL_INPUT_LINUXEV -#undef SDL_INPUT_TSLIB -#undef SDL_JOYSTICK_BEOS -#undef SDL_JOYSTICK_DC -#undef SDL_JOYSTICK_DUMMY -#undef SDL_JOYSTICK_IOKIT -#undef SDL_JOYSTICK_LINUX -#undef SDL_JOYSTICK_MACOS -#undef SDL_JOYSTICK_MINT -#undef SDL_JOYSTICK_OS2 -#undef SDL_JOYSTICK_RISCOS -#undef SDL_JOYSTICK_WINMM -#undef SDL_JOYSTICK_USBHID -#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H - -/* Enable various shared object loading systems */ -#undef SDL_LOADSO_BEOS -#undef SDL_LOADSO_DLCOMPAT -#undef SDL_LOADSO_DLOPEN -#undef SDL_LOADSO_DUMMY -#undef SDL_LOADSO_LDG -#undef SDL_LOADSO_MACOS -#undef SDL_LOADSO_OS2 -#undef SDL_LOADSO_WIN32 - -/* Enable various threading systems */ -#undef SDL_THREAD_BEOS -#undef SDL_THREAD_DC -#undef SDL_THREAD_OS2 -#undef SDL_THREAD_PTH -#undef SDL_THREAD_PTHREAD -#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX -#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP -#undef SDL_THREAD_SPROC -#undef SDL_THREAD_WIN32 - -/* Enable various timer systems */ -#undef SDL_TIMER_BEOS -#undef SDL_TIMER_DC -#undef SDL_TIMER_DUMMY -#undef SDL_TIMER_MACOS -#undef SDL_TIMER_MINT -#undef SDL_TIMER_OS2 -#undef SDL_TIMER_RISCOS -#undef SDL_TIMER_UNIX -#undef SDL_TIMER_WIN32 -#undef SDL_TIMER_WINCE - -/* Enable various video drivers */ -#undef SDL_VIDEO_DRIVER_AALIB -#undef SDL_VIDEO_DRIVER_BWINDOW -#undef SDL_VIDEO_DRIVER_CACA -#undef SDL_VIDEO_DRIVER_DC -#undef SDL_VIDEO_DRIVER_DDRAW -#undef SDL_VIDEO_DRIVER_DGA -#undef SDL_VIDEO_DRIVER_DIRECTFB -#undef SDL_VIDEO_DRIVER_DRAWSPROCKET -#undef SDL_VIDEO_DRIVER_DUMMY -#undef SDL_VIDEO_DRIVER_FBCON -#undef SDL_VIDEO_DRIVER_GAPI -#undef SDL_VIDEO_DRIVER_GEM -#undef SDL_VIDEO_DRIVER_GGI -#undef SDL_VIDEO_DRIVER_IPOD -#undef SDL_VIDEO_DRIVER_NANOX -#undef SDL_VIDEO_DRIVER_OS2FS -#undef SDL_VIDEO_DRIVER_PHOTON -#undef SDL_VIDEO_DRIVER_PICOGUI -#undef SDL_VIDEO_DRIVER_PS2GS -#undef SDL_VIDEO_DRIVER_PS3 -#undef SDL_VIDEO_DRIVER_QTOPIA -#undef SDL_VIDEO_DRIVER_QUARTZ -#undef SDL_VIDEO_DRIVER_RISCOS -#undef SDL_VIDEO_DRIVER_SVGALIB -#undef SDL_VIDEO_DRIVER_TOOLBOX -#undef SDL_VIDEO_DRIVER_VGL -#undef SDL_VIDEO_DRIVER_WINDIB -#undef SDL_VIDEO_DRIVER_WSCONS -#undef SDL_VIDEO_DRIVER_X11 -#undef SDL_VIDEO_DRIVER_X11_DGAMOUSE -#undef SDL_VIDEO_DRIVER_X11_DYNAMIC -#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT -#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR -#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER -#undef SDL_VIDEO_DRIVER_X11_VIDMODE -#undef SDL_VIDEO_DRIVER_X11_XINERAMA -#undef SDL_VIDEO_DRIVER_X11_XME -#undef SDL_VIDEO_DRIVER_X11_XRANDR -#undef SDL_VIDEO_DRIVER_X11_XV -#undef SDL_VIDEO_DRIVER_XBIOS - -/* Enable OpenGL support */ -#undef SDL_VIDEO_OPENGL -#undef SDL_VIDEO_OPENGL_GLX -#undef SDL_VIDEO_OPENGL_WGL -#undef SDL_VIDEO_OPENGL_OSMESA -#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC - -/* Disable screensaver */ -#undef SDL_VIDEO_DISABLE_SCREENSAVER - -/* Enable assembly routines */ -#undef SDL_ASSEMBLY_ROUTINES -#undef SDL_HERMES_BLITTERS -#undef SDL_ALTIVEC_BLITTERS - -#endif /* _SDL_config_h */ diff --git a/mednafen/sdl/include/SDL_config_dreamcast.h b/mednafen/sdl/include/SDL_config_dreamcast.h deleted file mode 100644 index f3e9b476fd..0000000000 --- a/mednafen/sdl/include/SDL_config_dreamcast.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_dreamcast_h -#define _SDL_config_dreamcast_h - -#include "SDL_platform.h" - -/* This is a set of defines to configure the SDL features */ - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; -typedef signed int int32_t; -typedef unsigned int uint32_t; -typedef signed long long int64_t; -typedef unsigned long long uint64_t; -typedef unsigned long uintptr_t; -#define SDL_HAS_64BIT_TYPE 1 - -/* Useful headers */ -#define HAVE_SYS_TYPES_H 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_CTYPE_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_GETENV 1 -#define HAVE_PUTENV 1 -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -#define HAVE_BCOPY 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRDUP 1 -#define HAVE_INDEX 1 -#define HAVE_RINDEX 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_STRICMP 1 -#define HAVE_STRCASECMP 1 -#define HAVE_SSCANF 1 -#define HAVE_SNPRINTF 1 -#define HAVE_VSNPRINTF 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_DC 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#define SDL_CDROM_DC 1 - -/* Enable various input drivers */ -#define SDL_JOYSTICK_DC 1 - -/* Enable various shared object loading systems */ -#define SDL_LOADSO_DUMMY 1 - -/* Enable various threading systems */ -#define SDL_THREAD_DC 1 - -/* Enable various timer systems */ -#define SDL_TIMER_DC 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DC 1 -#define SDL_VIDEO_DRIVER_DUMMY 1 - -#endif /* _SDL_config_dreamcast_h */ diff --git a/mednafen/sdl/include/SDL_config_macos.h b/mednafen/sdl/include/SDL_config_macos.h deleted file mode 100644 index d9e7a3889e..0000000000 --- a/mednafen/sdl/include/SDL_config_macos.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_macos_h -#define _SDL_config_macos_h - -#include "SDL_platform.h" - -/* This is a set of defines to configure the SDL features */ - -#include - -typedef SInt8 int8_t; -typedef UInt8 uint8_t; -typedef SInt16 int16_t; -typedef UInt16 uint16_t; -typedef SInt32 int32_t; -typedef UInt32 uint32_t; -typedef SInt64 int64_t; -typedef UInt64 uint64_t; -typedef unsigned long uintptr_t; - -#define SDL_HAS_64BIT_TYPE 1 - -/* Useful headers */ -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_ABS 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_SSCANF 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_SNDMGR 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_CDROM_DUMMY 1 -#else -#define SDL_CDROM_MACOS 1 -#endif - -/* Enable various input drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_JOYSTICK_DUMMY 1 -#else -#define SDL_JOYSTICK_MACOS 1 -#endif - -/* Enable various shared object loading systems */ -#define SDL_LOADSO_MACOS 1 - -/* Enable various threading systems */ -#define SDL_THREADS_DISABLED 1 - -/* Enable various timer systems */ -#define SDL_TIMER_MACOS 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -#define SDL_VIDEO_DRIVER_DRAWSPROCKET 1 -#define SDL_VIDEO_DRIVER_TOOLBOX 1 - -/* Enable OpenGL support */ -#define SDL_VIDEO_OPENGL 1 - -#endif /* _SDL_config_macos_h */ diff --git a/mednafen/sdl/include/SDL_config_macosx.h b/mednafen/sdl/include/SDL_config_macosx.h deleted file mode 100644 index 154c77fc90..0000000000 --- a/mednafen/sdl/include/SDL_config_macosx.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_macosx_h -#define _SDL_config_macosx_h - -#include "SDL_platform.h" - -/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ -#include - -/* This is a set of defines to configure the SDL features */ - -#define SDL_HAS_64BIT_TYPE 1 - -/* Useful headers */ -/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ -#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) -#define HAVE_ALLOCA_H 1 -#endif -#define HAVE_SYS_TYPES_H 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_GETENV 1 -#define HAVE_PUTENV 1 -#define HAVE_UNSETENV 1 -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -#define HAVE_BCOPY 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRLCPY 1 -#define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOUL 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRTOULL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_STRCASECMP 1 -#define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 -#define HAVE_SNPRINTF 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_SIGACTION 1 -#define HAVE_SETJMP 1 -#define HAVE_NANOSLEEP 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_COREAUDIO 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#define SDL_CDROM_MACOSX 1 - -/* Enable various input drivers */ -#define SDL_JOYSTICK_IOKIT 1 - -/* Enable various shared object loading systems */ -#ifdef __ppc__ -/* For Mac OS X 10.2 compatibility */ -#define SDL_LOADSO_DLCOMPAT 1 -#else -#define SDL_LOADSO_DLOPEN 1 -#endif - -/* Enable various threading systems */ -#define SDL_THREAD_PTHREAD 1 -#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 - -/* Enable various timer systems */ -#define SDL_TIMER_UNIX 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -#if ((defined TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON)) -#define SDL_VIDEO_DRIVER_TOOLBOX 1 -#else -#define SDL_VIDEO_DRIVER_QUARTZ 1 -#endif -#define SDL_VIDEO_DRIVER_DGA 1 -#define SDL_VIDEO_DRIVER_X11 1 -#define SDL_VIDEO_DRIVER_X11_DGAMOUSE 1 -#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib" -#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib" -#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib" -#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER "/usr/X11R6/lib/libXrender.1.dylib" -#define SDL_VIDEO_DRIVER_X11_VIDMODE 1 -#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 -#define SDL_VIDEO_DRIVER_X11_XME 1 -#define SDL_VIDEO_DRIVER_X11_XRANDR 1 -#define SDL_VIDEO_DRIVER_X11_XV 1 - -/* Enable OpenGL support */ -#define SDL_VIDEO_OPENGL 1 -#define SDL_VIDEO_OPENGL_GLX 1 - -/* Disable screensaver */ -#define SDL_VIDEO_DISABLE_SCREENSAVER 1 - -/* Enable assembly routines */ -#define SDL_ASSEMBLY_ROUTINES 1 -#ifdef __ppc__ -#define SDL_ALTIVEC_BLITTERS 1 -#endif - -#endif /* _SDL_config_macosx_h */ diff --git a/mednafen/sdl/include/SDL_config_minimal.h b/mednafen/sdl/include/SDL_config_minimal.h deleted file mode 100644 index fc4128bf4a..0000000000 --- a/mednafen/sdl/include/SDL_config_minimal.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_minimal_h -#define _SDL_config_minimal_h - -#include "SDL_platform.h" - -/* This is the minimal configuration that can be used to build SDL */ - -#include - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; -typedef signed int int32_t; -typedef unsigned int uint32_t; -typedef unsigned int size_t; -typedef unsigned long uintptr_t; - -/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ -#define SDL_CDROM_DISABLED 1 - -/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ -#define SDL_JOYSTICK_DISABLED 1 - -/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ -#define SDL_LOADSO_DISABLED 1 - -/* Enable the stub thread support (src/thread/generic/\*.c) */ -#define SDL_THREADS_DISABLED 1 - -/* Enable the stub timer support (src/timer/dummy/\*.c) */ -#define SDL_TIMERS_DISABLED 1 - -/* Enable the dummy video driver (src/video/dummy/\*.c) */ -#define SDL_VIDEO_DRIVER_DUMMY 1 - -#endif /* _SDL_config_minimal_h */ diff --git a/mednafen/sdl/include/SDL_config_nds.h b/mednafen/sdl/include/SDL_config_nds.h deleted file mode 100644 index 792a2320e3..0000000000 --- a/mednafen/sdl/include/SDL_config_nds.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_nds_h -#define _SDL_config_nds_h - -#include "SDL_platform.h" - -/* This is a set of defines to configure the SDL features */ - -/* General platform specific identifiers */ -#include "SDL_platform.h" - -/* C datatypes */ -#define SDL_HAS_64BIT_TYPE 1 - -/* Endianness */ -#define SDL_BYTEORDER 1234 - -/* Useful headers */ -#define HAVE_ALLOCA_H 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDARG_H 1 -#define HAVE_MALLOC_H 1 -#define HAVE_STRING_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_ICONV_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_GETENV 1 -#define HAVE_PUTENV 1 -#define HAVE_UNSETENV 1 -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -#define HAVE_BCOPY 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_STRLEN 1 -#define HAVE_STRLCPY 1 -#define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOUL 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRTOULL 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_STRCASECMP 1 -#define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 -#define HAVE_SNPRINTF 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_SETJMP 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_NDS 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ -#define SDL_CDROM_DISABLED 1 - -/* Enable various input drivers */ -#define SDL_JOYSTICK_NDS 1 - -/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ -#define SDL_LOADSO_DISABLED 1 - -/* Enable the stub thread support (src/thread/generic/\*.c) */ -#define SDL_THREADS_DISABLED 1 - -/* Enable various timer systems */ -#define SDL_TIMER_NDS 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_NDS 1 -#define SDL_VIDEO_DRIVER_DUMMY 1 - -#endif /* _SDL_config_nds_h */ diff --git a/mednafen/sdl/include/SDL_config_os2.h b/mednafen/sdl/include/SDL_config_os2.h deleted file mode 100644 index 045580292e..0000000000 --- a/mednafen/sdl/include/SDL_config_os2.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_os2_h -#define _SDL_config_os2_h - -#include "SDL_platform.h" - -/* This is a set of defines to configure the SDL features */ - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; -typedef signed int int32_t; -typedef unsigned int uint32_t; -typedef unsigned int size_t; -typedef unsigned long uintptr_t; -typedef signed long long int64_t; -typedef unsigned long long uint64_t; - -#define SDL_HAS_64BIT_TYPE 1 - -/* Use Watcom's LIBC */ -#define HAVE_LIBC 1 - -/* Useful headers */ -#define HAVE_SYS_TYPES_H 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDARG_H 1 -#define HAVE_MALLOC_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRING_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_GETENV 1 -#define HAVE_PUTENV 1 -#define HAVE_UNSETENV 1 -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -#define HAVE_BCOPY 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRLCPY 1 -#define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 -#define HAVE__STRREV 1 -#define HAVE__STRUPR 1 -#define HAVE__STRLWR 1 -#define HAVE_INDEX 1 -#define HAVE_RINDEX 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE__LTOA 1 -#define HAVE__UITOA 1 -#define HAVE__ULTOA 1 -#define HAVE_STRTOL 1 -#define HAVE__I64TOA 1 -#define HAVE__UI64TOA 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_STRICMP 1 -#define HAVE_STRCASECMP 1 -#define HAVE_SSCANF 1 -#define HAVE_SNPRINTF 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_SETJMP 1 -#define HAVE_CLOCK_GETTIME 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_DART 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#define SDL_CDROM_OS2 1 - -/* Enable various input drivers */ -#define SDL_JOYSTICK_OS2 1 - -/* Enable various shared object loading systems */ -#define SDL_LOADSO_OS2 1 - -/* Enable various threading systems */ -#define SDL_THREAD_OS2 1 - -/* Enable various timer systems */ -#define SDL_TIMER_OS2 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -#define SDL_VIDEO_DRIVER_OS2FS 1 - -/* Enable OpenGL support */ -/* Nothing here yet for OS/2... :( */ - -/* Enable assembly routines where available */ -#define SDL_ASSEMBLY_ROUTINES 1 - -#endif /* _SDL_config_os2_h */ diff --git a/mednafen/sdl/include/SDL_config_symbian.h b/mednafen/sdl/include/SDL_config_symbian.h deleted file mode 100644 index 9e514ca947..0000000000 --- a/mednafen/sdl/include/SDL_config_symbian.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* - -Symbian version Markus Mertama - -*/ - - -#ifndef _SDL_CONFIG_SYMBIAN_H -#define _SDL_CONFIG_SYMBIAN_H - -#include "SDL_platform.h" - -/* This is the minimal configuration that can be used to build SDL */ - - -#include -#include - - -#ifdef __GCCE__ -#define SYMBIAN32_GCCE -#endif - -#ifndef _SIZE_T_DEFINED -typedef unsigned int size_t; -#endif - -#ifndef _INTPTR_T_DECLARED -typedef unsigned int uintptr_t; -#endif - -#ifndef _INT8_T_DECLARED -typedef signed char int8_t; -#endif - -#ifndef _UINT8_T_DECLARED -typedef unsigned char uint8_t; -#endif - -#ifndef _INT16_T_DECLARED -typedef signed short int16_t; -#endif - -#ifndef _UINT16_T_DECLARED -typedef unsigned short uint16_t; -#endif - -#ifndef _INT32_T_DECLARED -typedef signed int int32_t; -#endif - -#ifndef _UINT32_T_DECLARED -typedef unsigned int uint32_t; -#endif - -#ifndef _INT64_T_DECLARED -typedef signed long long int64_t; -#endif - -#ifndef _UINT64_T_DECLARED -typedef unsigned long long uint64_t; -#endif - -#define SDL_AUDIO_DRIVER_EPOCAUDIO 1 - - -/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ -#define SDL_CDROM_DISABLED 1 - -/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ -#define SDL_JOYSTICK_DISABLED 1 - -/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ -#define SDL_LOADSO_DISABLED 1 - -#define SDL_THREAD_SYMBIAN 1 - -#define SDL_VIDEO_DRIVER_EPOC 1 - -#define SDL_VIDEO_OPENGL 0 - -#define SDL_HAS_64BIT_TYPE 1 - -#define HAVE_LIBC 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 - -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -/*#define HAVE_ALLOCA 1*/ -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE__STRUPR 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOUL 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -/*#define HAVE__STRICMP 1*/ -#define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 -#define HAVE_STDARG_H 1 -#define HAVE_STDDEF_H 1 - - - -#endif /* _SDL_CONFIG_SYMBIAN_H */ diff --git a/mednafen/sdl/include/SDL_copying.h b/mednafen/sdl/include/SDL_copying.h deleted file mode 100644 index 17d524834a..0000000000 --- a/mednafen/sdl/include/SDL_copying.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - diff --git a/mednafen/sdl/include/SDL_cpuinfo.h b/mednafen/sdl/include/SDL_cpuinfo.h deleted file mode 100644 index 428b22deb5..0000000000 --- a/mednafen/sdl/include/SDL_cpuinfo.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_cpuinfo.h - * CPU feature detection for SDL - */ - -#ifndef _SDL_cpuinfo_h -#define _SDL_cpuinfo_h - -#include "SDL_stdinc.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** This function returns true if the CPU has the RDTSC instruction */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); - -/** This function returns true if the CPU has MMX features */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); - -/** This function returns true if the CPU has MMX Ext. features */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasMMXExt(void); - -/** This function returns true if the CPU has 3DNow features */ -extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); - -/** This function returns true if the CPU has 3DNow! Ext. features */ -extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNowExt(void); - -/** This function returns true if the CPU has SSE features */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); - -/** This function returns true if the CPU has SSE2 features */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); - -/** This function returns true if the CPU has AltiVec features */ -extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_cpuinfo_h */ diff --git a/mednafen/sdl/include/SDL_endian.h b/mednafen/sdl/include/SDL_endian.h deleted file mode 100644 index cf5e83a77e..0000000000 --- a/mednafen/sdl/include/SDL_endian.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_endian.h - * Functions for reading and writing endian-specific values - */ - -#ifndef _SDL_endian_h -#define _SDL_endian_h - -#include "SDL_stdinc.h" - -/** @name SDL_ENDIANs - * The two types of endianness - */ -/*@{*/ -#define SDL_LIL_ENDIAN 1234 -#define SDL_BIG_ENDIAN 4321 -/*@}*/ - -#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ -#if defined(__hppa__) || \ - defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ - (defined(__MIPS__) && defined(__MISPEB__)) || \ - defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \ - defined(__sparc__) -#define SDL_BYTEORDER SDL_BIG_ENDIAN -#else -#define SDL_BYTEORDER SDL_LIL_ENDIAN -#endif -#endif /* !SDL_BYTEORDER */ - - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @name SDL_Swap Functions - * Use inline functions for compilers that support them, and static - * functions for those that do not. Because these functions become - * static for compilers that do not support inline functions, this - * header should only be included in files that actually use them. - */ -/*@{*/ -#if defined(__GNUC__) && defined(__i386__) && \ - !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) -static __inline__ Uint16 SDL_Swap16(Uint16 x) -{ - __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); - return x; -} -#elif defined(__GNUC__) && defined(__x86_64__) -static __inline__ Uint16 SDL_Swap16(Uint16 x) -{ - __asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x)); - return x; -} -#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) -static __inline__ Uint16 SDL_Swap16(Uint16 x) -{ - Uint16 result; - - __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); - return result; -} -#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) -static __inline__ Uint16 SDL_Swap16(Uint16 x) -{ - __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); - return x; -} -#else -static __inline__ Uint16 SDL_Swap16(Uint16 x) { - return((x<<8)|(x>>8)); -} -#endif - -#if defined(__GNUC__) && defined(__i386__) && \ - !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) -static __inline__ Uint32 SDL_Swap32(Uint32 x) -{ - __asm__("bswap %0" : "=r" (x) : "0" (x)); - return x; -} -#elif defined(__GNUC__) && defined(__x86_64__) -static __inline__ Uint32 SDL_Swap32(Uint32 x) -{ - __asm__("bswapl %0" : "=r" (x) : "0" (x)); - return x; -} -#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) -static __inline__ Uint32 SDL_Swap32(Uint32 x) -{ - Uint32 result; - - __asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x)); - __asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x)); - __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); - return result; -} -#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) -static __inline__ Uint32 SDL_Swap32(Uint32 x) -{ - __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); - return x; -} -#else -static __inline__ Uint32 SDL_Swap32(Uint32 x) { - return((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24)); -} -#endif - -#ifdef SDL_HAS_64BIT_TYPE -#if defined(__GNUC__) && defined(__i386__) && \ - !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) -static __inline__ Uint64 SDL_Swap64(Uint64 x) -{ - union { - struct { Uint32 a,b; } s; - Uint64 u; - } v; - v.u = x; - __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" - : "=r" (v.s.a), "=r" (v.s.b) - : "0" (v.s.a), "1" (v.s.b)); - return v.u; -} -#elif defined(__GNUC__) && defined(__x86_64__) -static __inline__ Uint64 SDL_Swap64(Uint64 x) -{ - __asm__("bswapq %0" : "=r" (x) : "0" (x)); - return x; -} -#else -static __inline__ Uint64 SDL_Swap64(Uint64 x) -{ - Uint32 hi, lo; - - /* Separate into high and low 32-bit values and swap them */ - lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); - x >>= 32; - hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); - x = SDL_Swap32(lo); - x <<= 32; - x |= SDL_Swap32(hi); - return(x); -} -#endif -#else -/* This is mainly to keep compilers from complaining in SDL code. - * If there is no real 64-bit datatype, then compilers will complain about - * the fake 64-bit datatype that SDL provides when it compiles user code. - */ -#define SDL_Swap64(X) (X) -#endif /* SDL_HAS_64BIT_TYPE */ -/*@}*/ - -/** - * @name SDL_SwapLE and SDL_SwapBE Functions - * Byteswap item from the specified endianness to the native endianness - */ -/*@{*/ -#if SDL_BYTEORDER == SDL_LIL_ENDIAN -#define SDL_SwapLE16(X) (X) -#define SDL_SwapLE32(X) (X) -#define SDL_SwapLE64(X) (X) -#define SDL_SwapBE16(X) SDL_Swap16(X) -#define SDL_SwapBE32(X) SDL_Swap32(X) -#define SDL_SwapBE64(X) SDL_Swap64(X) -#else -#define SDL_SwapLE16(X) SDL_Swap16(X) -#define SDL_SwapLE32(X) SDL_Swap32(X) -#define SDL_SwapLE64(X) SDL_Swap64(X) -#define SDL_SwapBE16(X) (X) -#define SDL_SwapBE32(X) (X) -#define SDL_SwapBE64(X) (X) -#endif -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_endian_h */ diff --git a/mednafen/sdl/include/SDL_error.h b/mednafen/sdl/include/SDL_error.h deleted file mode 100644 index a8f9a14ff4..0000000000 --- a/mednafen/sdl/include/SDL_error.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_error.h - * Simple error message routines for SDL - */ - -#ifndef _SDL_error_h -#define _SDL_error_h - -#include "SDL_stdinc.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @name Public functions - */ -/*@{*/ -extern DECLSPEC void SDLCALL SDL_SetError(const char *fmt, ...); -extern DECLSPEC char * SDLCALL SDL_GetError(void); -extern DECLSPEC void SDLCALL SDL_ClearError(void); -/*@}*/ - -/** - * @name Private functions - * @internal Private error message function - used internally - */ -/*@{*/ -#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) -#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) -typedef enum { - SDL_ENOMEM, - SDL_EFREAD, - SDL_EFWRITE, - SDL_EFSEEK, - SDL_UNSUPPORTED, - SDL_LASTERROR -} SDL_errorcode; -extern DECLSPEC void SDLCALL SDL_Error(SDL_errorcode code); -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_error_h */ diff --git a/mednafen/sdl/include/SDL_events.h b/mednafen/sdl/include/SDL_events.h deleted file mode 100644 index caa6fecb6a..0000000000 --- a/mednafen/sdl/include/SDL_events.h +++ /dev/null @@ -1,356 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file SDL_events.h - * Include file for SDL event handling - */ - -#ifndef _SDL_events_h -#define _SDL_events_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_active.h" -#include "SDL_keyboard.h" -#include "SDL_mouse.h" -#include "SDL_joystick.h" -#include "SDL_quit.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @name General keyboard/mouse state definitions */ -/*@{*/ -#define SDL_RELEASED 0 -#define SDL_PRESSED 1 -/*@}*/ - -/** Event enumerations */ -typedef enum { - SDL_NOEVENT = 0, /**< Unused (do not remove) */ - SDL_ACTIVEEVENT, /**< Application loses/gains visibility */ - SDL_KEYDOWN, /**< Keys pressed */ - SDL_KEYUP, /**< Keys released */ - SDL_MOUSEMOTION, /**< Mouse moved */ - SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ - SDL_MOUSEBUTTONUP, /**< Mouse button released */ - SDL_JOYAXISMOTION, /**< Joystick axis motion */ - SDL_JOYBALLMOTION, /**< Joystick trackball motion */ - SDL_JOYHATMOTION, /**< Joystick hat position change */ - SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ - SDL_JOYBUTTONUP, /**< Joystick button released */ - SDL_QUIT, /**< User-requested quit */ - SDL_SYSWMEVENT, /**< System specific event */ - SDL_EVENT_RESERVEDA, /**< Reserved for future use.. */ - SDL_EVENT_RESERVEDB, /**< Reserved for future use.. */ - SDL_VIDEORESIZE, /**< User resized video mode */ - SDL_VIDEOEXPOSE, /**< Screen needs to be redrawn */ - SDL_EVENT_RESERVED2, /**< Reserved for future use.. */ - SDL_EVENT_RESERVED3, /**< Reserved for future use.. */ - SDL_EVENT_RESERVED4, /**< Reserved for future use.. */ - SDL_EVENT_RESERVED5, /**< Reserved for future use.. */ - SDL_EVENT_RESERVED6, /**< Reserved for future use.. */ - SDL_EVENT_RESERVED7, /**< Reserved for future use.. */ - /** Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ - SDL_USEREVENT = 24, - /** This last event is only for bounding internal arrays - * It is the number of bits in the event mask datatype -- Uint32 - */ - SDL_NUMEVENTS = 32 -} SDL_EventType; - -/** @name Predefined event masks */ -/*@{*/ -#define SDL_EVENTMASK(X) (1<<(X)) -typedef enum { - SDL_ACTIVEEVENTMASK = SDL_EVENTMASK(SDL_ACTIVEEVENT), - SDL_KEYDOWNMASK = SDL_EVENTMASK(SDL_KEYDOWN), - SDL_KEYUPMASK = SDL_EVENTMASK(SDL_KEYUP), - SDL_KEYEVENTMASK = SDL_EVENTMASK(SDL_KEYDOWN)| - SDL_EVENTMASK(SDL_KEYUP), - SDL_MOUSEMOTIONMASK = SDL_EVENTMASK(SDL_MOUSEMOTION), - SDL_MOUSEBUTTONDOWNMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN), - SDL_MOUSEBUTTONUPMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONUP), - SDL_MOUSEEVENTMASK = SDL_EVENTMASK(SDL_MOUSEMOTION)| - SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)| - SDL_EVENTMASK(SDL_MOUSEBUTTONUP), - SDL_JOYAXISMOTIONMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION), - SDL_JOYBALLMOTIONMASK = SDL_EVENTMASK(SDL_JOYBALLMOTION), - SDL_JOYHATMOTIONMASK = SDL_EVENTMASK(SDL_JOYHATMOTION), - SDL_JOYBUTTONDOWNMASK = SDL_EVENTMASK(SDL_JOYBUTTONDOWN), - SDL_JOYBUTTONUPMASK = SDL_EVENTMASK(SDL_JOYBUTTONUP), - SDL_JOYEVENTMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION)| - SDL_EVENTMASK(SDL_JOYBALLMOTION)| - SDL_EVENTMASK(SDL_JOYHATMOTION)| - SDL_EVENTMASK(SDL_JOYBUTTONDOWN)| - SDL_EVENTMASK(SDL_JOYBUTTONUP), - SDL_VIDEORESIZEMASK = SDL_EVENTMASK(SDL_VIDEORESIZE), - SDL_VIDEOEXPOSEMASK = SDL_EVENTMASK(SDL_VIDEOEXPOSE), - SDL_QUITMASK = SDL_EVENTMASK(SDL_QUIT), - SDL_SYSWMEVENTMASK = SDL_EVENTMASK(SDL_SYSWMEVENT) -} SDL_EventMask ; -#define SDL_ALLEVENTS 0xFFFFFFFF -/*@}*/ - -/** Application visibility event structure */ -typedef struct SDL_ActiveEvent { - Uint8 type; /**< SDL_ACTIVEEVENT */ - Uint8 gain; /**< Whether given states were gained or lost (1/0) */ - Uint8 state; /**< A mask of the focus states */ -} SDL_ActiveEvent; - -/** Keyboard event structure */ -typedef struct SDL_KeyboardEvent { - Uint8 type; /**< SDL_KEYDOWN or SDL_KEYUP */ - Uint8 which; /**< The keyboard device index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ - SDL_keysym keysym; -} SDL_KeyboardEvent; - -/** Mouse motion event structure */ -typedef struct SDL_MouseMotionEvent { - Uint8 type; /**< SDL_MOUSEMOTION */ - Uint8 which; /**< The mouse device index */ - Uint8 state; /**< The current button state */ - Uint16 x, y; /**< The X/Y coordinates of the mouse */ - Sint16 xrel; /**< The relative motion in the X direction */ - Sint16 yrel; /**< The relative motion in the Y direction */ -} SDL_MouseMotionEvent; - -/** Mouse button event structure */ -typedef struct SDL_MouseButtonEvent { - Uint8 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ - Uint8 which; /**< The mouse device index */ - Uint8 button; /**< The mouse button index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ - Uint16 x, y; /**< The X/Y coordinates of the mouse at press time */ -} SDL_MouseButtonEvent; - -/** Joystick axis motion event structure */ -typedef struct SDL_JoyAxisEvent { - Uint8 type; /**< SDL_JOYAXISMOTION */ - Uint8 which; /**< The joystick device index */ - Uint8 axis; /**< The joystick axis index */ - Sint16 value; /**< The axis value (range: -32768 to 32767) */ -} SDL_JoyAxisEvent; - -/** Joystick trackball motion event structure */ -typedef struct SDL_JoyBallEvent { - Uint8 type; /**< SDL_JOYBALLMOTION */ - Uint8 which; /**< The joystick device index */ - Uint8 ball; /**< The joystick trackball index */ - Sint16 xrel; /**< The relative motion in the X direction */ - Sint16 yrel; /**< The relative motion in the Y direction */ -} SDL_JoyBallEvent; - -/** Joystick hat position change event structure */ -typedef struct SDL_JoyHatEvent { - Uint8 type; /**< SDL_JOYHATMOTION */ - Uint8 which; /**< The joystick device index */ - Uint8 hat; /**< The joystick hat index */ - Uint8 value; /**< The hat position value: - * SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP - * SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT - * SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN - * Note that zero means the POV is centered. - */ -} SDL_JoyHatEvent; - -/** Joystick button event structure */ -typedef struct SDL_JoyButtonEvent { - Uint8 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ - Uint8 which; /**< The joystick device index */ - Uint8 button; /**< The joystick button index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ -} SDL_JoyButtonEvent; - -/** The "window resized" event - * When you get this event, you are responsible for setting a new video - * mode with the new width and height. - */ -typedef struct SDL_ResizeEvent { - Uint8 type; /**< SDL_VIDEORESIZE */ - int w; /**< New width */ - int h; /**< New height */ -} SDL_ResizeEvent; - -/** The "screen redraw" event */ -typedef struct SDL_ExposeEvent { - Uint8 type; /**< SDL_VIDEOEXPOSE */ -} SDL_ExposeEvent; - -/** The "quit requested" event */ -typedef struct SDL_QuitEvent { - Uint8 type; /**< SDL_QUIT */ -} SDL_QuitEvent; - -/** A user-defined event type */ -typedef struct SDL_UserEvent { - Uint8 type; /**< SDL_USEREVENT through SDL_NUMEVENTS-1 */ - int code; /**< User defined event code */ - void *data1; /**< User defined data pointer */ - void *data2; /**< User defined data pointer */ -} SDL_UserEvent; - -/** If you want to use this event, you should include SDL_syswm.h */ -struct SDL_SysWMmsg; -typedef struct SDL_SysWMmsg SDL_SysWMmsg; -typedef struct SDL_SysWMEvent { - Uint8 type; - SDL_SysWMmsg *msg; -} SDL_SysWMEvent; - -/** General event structure */ -typedef union SDL_Event { - Uint8 type; - SDL_ActiveEvent active; - SDL_KeyboardEvent key; - SDL_MouseMotionEvent motion; - SDL_MouseButtonEvent button; - SDL_JoyAxisEvent jaxis; - SDL_JoyBallEvent jball; - SDL_JoyHatEvent jhat; - SDL_JoyButtonEvent jbutton; - SDL_ResizeEvent resize; - SDL_ExposeEvent expose; - SDL_QuitEvent quit; - SDL_UserEvent user; - SDL_SysWMEvent syswm; -} SDL_Event; - - -/* Function prototypes */ - -/** Pumps the event loop, gathering events from the input devices. - * This function updates the event queue and internal input device state. - * This should only be run in the thread that sets the video mode. - */ -extern DECLSPEC void SDLCALL SDL_PumpEvents(void); - -typedef enum { - SDL_ADDEVENT, - SDL_PEEKEVENT, - SDL_GETEVENT -} SDL_eventaction; - -/** - * Checks the event queue for messages and optionally returns them. - * - * If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to - * the back of the event queue. - * If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front - * of the event queue, matching 'mask', will be returned and will not - * be removed from the queue. - * If 'action' is SDL_GETEVENT, up to 'numevents' events at the front - * of the event queue, matching 'mask', will be returned and will be - * removed from the queue. - * - * @return - * This function returns the number of events actually stored, or -1 - * if there was an error. - * - * This function is thread-safe. - */ -extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event *events, int numevents, - SDL_eventaction action, Uint32 mask); - -/** Polls for currently pending events, and returns 1 if there are any pending - * events, or 0 if there are none available. If 'event' is not NULL, the next - * event is removed from the queue and stored in that area. - */ -extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event *event); - -/** Waits indefinitely for the next available event, returning 1, or 0 if there - * was an error while waiting for events. If 'event' is not NULL, the next - * event is removed from the queue and stored in that area. - */ -extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event *event); - -/** Add an event to the event queue. - * This function returns 0 on success, or -1 if the event queue was full - * or there was some other error. - */ -extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event *event); - -/** @name Event Filtering */ -/*@{*/ -typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); -/** - * This function sets up a filter to process all events before they - * change internal state and are posted to the internal event queue. - * - * The filter is protypted as: - * @code typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); @endcode - * - * If the filter returns 1, then the event will be added to the internal queue. - * If it returns 0, then the event will be dropped from the queue, but the - * internal state will still be updated. This allows selective filtering of - * dynamically arriving events. - * - * @warning Be very careful of what you do in the event filter function, as - * it may run in a different thread! - * - * There is one caveat when dealing with the SDL_QUITEVENT event type. The - * event filter is only called when the window manager desires to close the - * application window. If the event filter returns 1, then the window will - * be closed, otherwise the window will remain open if possible. - * If the quit event is generated by an interrupt signal, it will bypass the - * internal queue and be delivered to the application at the next event poll. - */ -extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter); - -/** - * Return the current event filter - can be used to "chain" filters. - * If there is no event filter set, this function returns NULL. - */ -extern DECLSPEC SDL_EventFilter SDLCALL SDL_GetEventFilter(void); -/*@}*/ - -/** @name Event State */ -/*@{*/ -#define SDL_QUERY -1 -#define SDL_IGNORE 0 -#define SDL_DISABLE 0 -#define SDL_ENABLE 1 -/*@}*/ - -/** -* This function allows you to set the state of processing certain events. -* If 'state' is set to SDL_IGNORE, that event will be automatically dropped -* from the event queue and will not event be filtered. -* If 'state' is set to SDL_ENABLE, that event will be processed normally. -* If 'state' is set to SDL_QUERY, SDL_EventState() will return the -* current processing state of the specified event. -*/ -extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_events_h */ diff --git a/mednafen/sdl/include/SDL_getenv.h b/mednafen/sdl/include/SDL_getenv.h deleted file mode 100644 index 7dad3f5127..0000000000 --- a/mednafen/sdl/include/SDL_getenv.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_getenv.h - * @deprecated Use SDL_stdinc.h instead - */ - -/* DEPRECATED */ -#include "SDL_stdinc.h" diff --git a/mednafen/sdl/include/SDL_joystick.h b/mednafen/sdl/include/SDL_joystick.h deleted file mode 100644 index 93a9f650b5..0000000000 --- a/mednafen/sdl/include/SDL_joystick.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_joystick.h - * Include file for SDL joystick event handling - */ - -#ifndef _SDL_joystick_h -#define _SDL_joystick_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @file SDL_joystick.h - * @note In order to use these functions, SDL_Init() must have been called - * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system - * for joysticks, and load appropriate drivers. - */ - -/** The joystick structure used to identify an SDL joystick */ -struct _SDL_Joystick; -typedef struct _SDL_Joystick SDL_Joystick; - -/* Function prototypes */ -/** - * Count the number of joysticks attached to the system - */ -extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); - -/** - * Get the implementation dependent name of a joystick. - * - * This can be called before any joysticks are opened. - * If no name can be found, this function returns NULL. - */ -extern DECLSPEC const char * SDLCALL SDL_JoystickName(int device_index); - -/** - * Open a joystick for use. - * - * @param[in] device_index - * The index passed as an argument refers to - * the N'th joystick on the system. This index is the value which will - * identify this joystick in future joystick events. - * - * @return This function returns a joystick identifier, or NULL if an error occurred. - */ -extern DECLSPEC SDL_Joystick * SDLCALL SDL_JoystickOpen(int device_index); - -/** - * Returns 1 if the joystick has been opened, or 0 if it has not. - */ -extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index); - -/** - * Get the device index of an opened joystick. - */ -extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick *joystick); - -/** - * Get the number of general axis controls on a joystick - */ -extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); - -/** - * Get the number of trackballs on a joystick - * - * Joystick trackballs have only relative motion events associated - * with them and their state cannot be polled. - */ -extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); - -/** - * Get the number of POV hats on a joystick - */ -extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); - -/** - * Get the number of buttons on a joystick - */ -extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); - -/** - * Update the current state of the open joysticks. - * - * This is called automatically by the event loop if any joystick - * events are enabled. - */ -extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); - -/** - * Enable/disable joystick event polling. - * - * If joystick events are disabled, you must call SDL_JoystickUpdate() - * yourself and check the state of the joystick when you want joystick - * information. - * - * @param[in] state The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE. - */ -extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); - -/** - * Get the current state of an axis control on a joystick - * - * @param[in] axis The axis indices start at index 0. - * - * @return The state is a value ranging from -32768 to 32767. - */ -extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); - -/** - * @name Hat Positions - * The return value of SDL_JoystickGetHat() is one of the following positions: - */ -/*@{*/ -#define SDL_HAT_CENTERED 0x00 -#define SDL_HAT_UP 0x01 -#define SDL_HAT_RIGHT 0x02 -#define SDL_HAT_DOWN 0x04 -#define SDL_HAT_LEFT 0x08 -#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) -#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) -#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) -#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) -/*@}*/ - -/** - * Get the current state of a POV hat on a joystick - * - * @param[in] hat The hat indices start at index 0. - */ -extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); - -/** - * Get the ball axis change since the last poll - * - * @param[in] ball The ball indices start at index 0. - * - * @return This returns 0, or -1 if you passed it invalid parameters. - */ -extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); - -/** - * Get the current state of a button on a joystick - * - * @param[in] button The button indices start at index 0. - */ -extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, int button); - -/** - * Close a joystick previously opened with SDL_JoystickOpen() - */ -extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_joystick_h */ diff --git a/mednafen/sdl/include/SDL_keyboard.h b/mednafen/sdl/include/SDL_keyboard.h deleted file mode 100644 index e887de6d43..0000000000 --- a/mednafen/sdl/include/SDL_keyboard.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_keyboard.h - * Include file for SDL keyboard event handling - */ - -#ifndef _SDL_keyboard_h -#define _SDL_keyboard_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_keysym.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** Keysym structure - * - * - The scancode is hardware dependent, and should not be used by general - * applications. If no hardware scancode is available, it will be 0. - * - * - The 'unicode' translated character is only available when character - * translation is enabled by the SDL_EnableUNICODE() API. If non-zero, - * this is a UNICODE character corresponding to the keypress. If the - * high 9 bits of the character are 0, then this maps to the equivalent - * ASCII character: - * @code - * char ch; - * if ( (keysym.unicode & 0xFF80) == 0 ) { - * ch = keysym.unicode & 0x7F; - * } else { - * An international character.. - * } - * @endcode - */ -typedef struct SDL_keysym { - Uint8 scancode; /**< hardware specific scancode */ - SDLKey sym; /**< SDL virtual keysym */ - SDLMod mod; /**< current key modifiers */ - Uint16 unicode; /**< translated character */ -} SDL_keysym; - -/** This is the mask which refers to all hotkey bindings */ -#define SDL_ALL_HOTKEYS 0xFFFFFFFF - -/* Function prototypes */ -/** - * Enable/Disable UNICODE translation of keyboard input. - * - * This translation has some overhead, so translation defaults off. - * - * @param[in] enable - * If 'enable' is 1, translation is enabled. - * If 'enable' is 0, translation is disabled. - * If 'enable' is -1, the translation state is not changed. - * - * @return It returns the previous state of keyboard translation. - */ -extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable); - -#define SDL_DEFAULT_REPEAT_DELAY 500 -#define SDL_DEFAULT_REPEAT_INTERVAL 30 -/** - * Enable/Disable keyboard repeat. Keyboard repeat defaults to off. - * - * @param[in] delay - * 'delay' is the initial delay in ms between the time when a key is - * pressed, and keyboard repeat begins. - * - * @param[in] interval - * 'interval' is the time in ms between keyboard repeat events. - * - * If 'delay' is set to 0, keyboard repeat is disabled. - */ -extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval); -extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval); - -/** - * Get a snapshot of the current state of the keyboard. - * Returns an array of keystates, indexed by the SDLK_* syms. - * Usage: - * @code - * Uint8 *keystate = SDL_GetKeyState(NULL); - * if ( keystate[SDLK_RETURN] ) //... \ is pressed. - * @endcode - */ -extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys); - -/** - * Get the current key modifier state - */ -extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void); - -/** - * Set the current key modifier state. - * This does not change the keyboard state, only the key modifier flags. - */ -extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate); - -/** - * Get the name of an SDL virtual keysym - */ -extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_keyboard_h */ diff --git a/mednafen/sdl/include/SDL_keysym.h b/mednafen/sdl/include/SDL_keysym.h deleted file mode 100644 index d07978765f..0000000000 --- a/mednafen/sdl/include/SDL_keysym.h +++ /dev/null @@ -1,326 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_keysym_h -#define _SDL_keysym_h - -/** What we really want is a mapping of every raw key on the keyboard. - * To support international keyboards, we use the range 0xA1 - 0xFF - * as international virtual keycodes. We'll follow in the footsteps of X11... - * @brief The names of the keys - */ -typedef enum { - /** @name ASCII mapped keysyms - * The keyboard syms have been cleverly chosen to map to ASCII - */ - /*@{*/ - SDLK_UNKNOWN = 0, - SDLK_FIRST = 0, - SDLK_BACKSPACE = 8, - SDLK_TAB = 9, - SDLK_CLEAR = 12, - SDLK_RETURN = 13, - SDLK_PAUSE = 19, - SDLK_ESCAPE = 27, - SDLK_SPACE = 32, - SDLK_EXCLAIM = 33, - SDLK_QUOTEDBL = 34, - SDLK_HASH = 35, - SDLK_DOLLAR = 36, - SDLK_AMPERSAND = 38, - SDLK_QUOTE = 39, - SDLK_LEFTPAREN = 40, - SDLK_RIGHTPAREN = 41, - SDLK_ASTERISK = 42, - SDLK_PLUS = 43, - SDLK_COMMA = 44, - SDLK_MINUS = 45, - SDLK_PERIOD = 46, - SDLK_SLASH = 47, - SDLK_0 = 48, - SDLK_1 = 49, - SDLK_2 = 50, - SDLK_3 = 51, - SDLK_4 = 52, - SDLK_5 = 53, - SDLK_6 = 54, - SDLK_7 = 55, - SDLK_8 = 56, - SDLK_9 = 57, - SDLK_COLON = 58, - SDLK_SEMICOLON = 59, - SDLK_LESS = 60, - SDLK_EQUALS = 61, - SDLK_GREATER = 62, - SDLK_QUESTION = 63, - SDLK_AT = 64, - /* - Skip uppercase letters - */ - SDLK_LEFTBRACKET = 91, - SDLK_BACKSLASH = 92, - SDLK_RIGHTBRACKET = 93, - SDLK_CARET = 94, - SDLK_UNDERSCORE = 95, - SDLK_BACKQUOTE = 96, - SDLK_a = 97, - SDLK_b = 98, - SDLK_c = 99, - SDLK_d = 100, - SDLK_e = 101, - SDLK_f = 102, - SDLK_g = 103, - SDLK_h = 104, - SDLK_i = 105, - SDLK_j = 106, - SDLK_k = 107, - SDLK_l = 108, - SDLK_m = 109, - SDLK_n = 110, - SDLK_o = 111, - SDLK_p = 112, - SDLK_q = 113, - SDLK_r = 114, - SDLK_s = 115, - SDLK_t = 116, - SDLK_u = 117, - SDLK_v = 118, - SDLK_w = 119, - SDLK_x = 120, - SDLK_y = 121, - SDLK_z = 122, - SDLK_DELETE = 127, - /* End of ASCII mapped keysyms */ - /*@}*/ - - /** @name International keyboard syms */ - /*@{*/ - SDLK_WORLD_0 = 160, /* 0xA0 */ - SDLK_WORLD_1 = 161, - SDLK_WORLD_2 = 162, - SDLK_WORLD_3 = 163, - SDLK_WORLD_4 = 164, - SDLK_WORLD_5 = 165, - SDLK_WORLD_6 = 166, - SDLK_WORLD_7 = 167, - SDLK_WORLD_8 = 168, - SDLK_WORLD_9 = 169, - SDLK_WORLD_10 = 170, - SDLK_WORLD_11 = 171, - SDLK_WORLD_12 = 172, - SDLK_WORLD_13 = 173, - SDLK_WORLD_14 = 174, - SDLK_WORLD_15 = 175, - SDLK_WORLD_16 = 176, - SDLK_WORLD_17 = 177, - SDLK_WORLD_18 = 178, - SDLK_WORLD_19 = 179, - SDLK_WORLD_20 = 180, - SDLK_WORLD_21 = 181, - SDLK_WORLD_22 = 182, - SDLK_WORLD_23 = 183, - SDLK_WORLD_24 = 184, - SDLK_WORLD_25 = 185, - SDLK_WORLD_26 = 186, - SDLK_WORLD_27 = 187, - SDLK_WORLD_28 = 188, - SDLK_WORLD_29 = 189, - SDLK_WORLD_30 = 190, - SDLK_WORLD_31 = 191, - SDLK_WORLD_32 = 192, - SDLK_WORLD_33 = 193, - SDLK_WORLD_34 = 194, - SDLK_WORLD_35 = 195, - SDLK_WORLD_36 = 196, - SDLK_WORLD_37 = 197, - SDLK_WORLD_38 = 198, - SDLK_WORLD_39 = 199, - SDLK_WORLD_40 = 200, - SDLK_WORLD_41 = 201, - SDLK_WORLD_42 = 202, - SDLK_WORLD_43 = 203, - SDLK_WORLD_44 = 204, - SDLK_WORLD_45 = 205, - SDLK_WORLD_46 = 206, - SDLK_WORLD_47 = 207, - SDLK_WORLD_48 = 208, - SDLK_WORLD_49 = 209, - SDLK_WORLD_50 = 210, - SDLK_WORLD_51 = 211, - SDLK_WORLD_52 = 212, - SDLK_WORLD_53 = 213, - SDLK_WORLD_54 = 214, - SDLK_WORLD_55 = 215, - SDLK_WORLD_56 = 216, - SDLK_WORLD_57 = 217, - SDLK_WORLD_58 = 218, - SDLK_WORLD_59 = 219, - SDLK_WORLD_60 = 220, - SDLK_WORLD_61 = 221, - SDLK_WORLD_62 = 222, - SDLK_WORLD_63 = 223, - SDLK_WORLD_64 = 224, - SDLK_WORLD_65 = 225, - SDLK_WORLD_66 = 226, - SDLK_WORLD_67 = 227, - SDLK_WORLD_68 = 228, - SDLK_WORLD_69 = 229, - SDLK_WORLD_70 = 230, - SDLK_WORLD_71 = 231, - SDLK_WORLD_72 = 232, - SDLK_WORLD_73 = 233, - SDLK_WORLD_74 = 234, - SDLK_WORLD_75 = 235, - SDLK_WORLD_76 = 236, - SDLK_WORLD_77 = 237, - SDLK_WORLD_78 = 238, - SDLK_WORLD_79 = 239, - SDLK_WORLD_80 = 240, - SDLK_WORLD_81 = 241, - SDLK_WORLD_82 = 242, - SDLK_WORLD_83 = 243, - SDLK_WORLD_84 = 244, - SDLK_WORLD_85 = 245, - SDLK_WORLD_86 = 246, - SDLK_WORLD_87 = 247, - SDLK_WORLD_88 = 248, - SDLK_WORLD_89 = 249, - SDLK_WORLD_90 = 250, - SDLK_WORLD_91 = 251, - SDLK_WORLD_92 = 252, - SDLK_WORLD_93 = 253, - SDLK_WORLD_94 = 254, - SDLK_WORLD_95 = 255, /* 0xFF */ - /*@}*/ - - /** @name Numeric keypad */ - /*@{*/ - SDLK_KP0 = 256, - SDLK_KP1 = 257, - SDLK_KP2 = 258, - SDLK_KP3 = 259, - SDLK_KP4 = 260, - SDLK_KP5 = 261, - SDLK_KP6 = 262, - SDLK_KP7 = 263, - SDLK_KP8 = 264, - SDLK_KP9 = 265, - SDLK_KP_PERIOD = 266, - SDLK_KP_DIVIDE = 267, - SDLK_KP_MULTIPLY = 268, - SDLK_KP_MINUS = 269, - SDLK_KP_PLUS = 270, - SDLK_KP_ENTER = 271, - SDLK_KP_EQUALS = 272, - /*@}*/ - - /** @name Arrows + Home/End pad */ - /*@{*/ - SDLK_UP = 273, - SDLK_DOWN = 274, - SDLK_RIGHT = 275, - SDLK_LEFT = 276, - SDLK_INSERT = 277, - SDLK_HOME = 278, - SDLK_END = 279, - SDLK_PAGEUP = 280, - SDLK_PAGEDOWN = 281, - /*@}*/ - - /** @name Function keys */ - /*@{*/ - SDLK_F1 = 282, - SDLK_F2 = 283, - SDLK_F3 = 284, - SDLK_F4 = 285, - SDLK_F5 = 286, - SDLK_F6 = 287, - SDLK_F7 = 288, - SDLK_F8 = 289, - SDLK_F9 = 290, - SDLK_F10 = 291, - SDLK_F11 = 292, - SDLK_F12 = 293, - SDLK_F13 = 294, - SDLK_F14 = 295, - SDLK_F15 = 296, - /*@}*/ - - /** @name Key state modifier keys */ - /*@{*/ - SDLK_NUMLOCK = 300, - SDLK_CAPSLOCK = 301, - SDLK_SCROLLOCK = 302, - SDLK_RSHIFT = 303, - SDLK_LSHIFT = 304, - SDLK_RCTRL = 305, - SDLK_LCTRL = 306, - SDLK_RALT = 307, - SDLK_LALT = 308, - SDLK_RMETA = 309, - SDLK_LMETA = 310, - SDLK_LSUPER = 311, /**< Left "Windows" key */ - SDLK_RSUPER = 312, /**< Right "Windows" key */ - SDLK_MODE = 313, /**< "Alt Gr" key */ - SDLK_COMPOSE = 314, /**< Multi-key compose key */ - /*@}*/ - - /** @name Miscellaneous function keys */ - /*@{*/ - SDLK_HELP = 315, - SDLK_PRINT = 316, - SDLK_SYSREQ = 317, - SDLK_BREAK = 318, - SDLK_MENU = 319, - SDLK_POWER = 320, /**< Power Macintosh power key */ - SDLK_EURO = 321, /**< Some european keyboards */ - SDLK_UNDO = 322, /**< Atari keyboard has Undo */ - /*@}*/ - - /* Add any other keys here */ - - SDLK_LAST -} SDLKey; - -/** Enumeration of valid key mods (possibly OR'd together) */ -typedef enum { - KMOD_NONE = 0x0000, - KMOD_LSHIFT= 0x0001, - KMOD_RSHIFT= 0x0002, - KMOD_LCTRL = 0x0040, - KMOD_RCTRL = 0x0080, - KMOD_LALT = 0x0100, - KMOD_RALT = 0x0200, - KMOD_LMETA = 0x0400, - KMOD_RMETA = 0x0800, - KMOD_NUM = 0x1000, - KMOD_CAPS = 0x2000, - KMOD_MODE = 0x4000, - KMOD_RESERVED = 0x8000 -} SDLMod; - -#define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) -#define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) -#define KMOD_ALT (KMOD_LALT|KMOD_RALT) -#define KMOD_META (KMOD_LMETA|KMOD_RMETA) - -#endif /* _SDL_keysym_h */ diff --git a/mednafen/sdl/include/SDL_loadso.h b/mednafen/sdl/include/SDL_loadso.h deleted file mode 100644 index 76fc723310..0000000000 --- a/mednafen/sdl/include/SDL_loadso.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_loadso.h - * System dependent library loading routines - */ - -/** @file SDL_loadso.h - * Some things to keep in mind: - * - These functions only work on C function names. Other languages may - * have name mangling and intrinsic language support that varies from - * compiler to compiler. - * - Make sure you declare your function pointers with the same calling - * convention as the actual library function. Your code will crash - * mysteriously if you do not do this. - * - Avoid namespace collisions. If you load a symbol from the library, - * it is not defined whether or not it goes into the global symbol - * namespace for the application. If it does and it conflicts with - * symbols in your code or other shared libraries, you will not get - * the results you expect. :) - */ - - -#ifndef _SDL_loadso_h -#define _SDL_loadso_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This function dynamically loads a shared object and returns a pointer - * to the object handle (or NULL if there was an error). - * The 'sofile' parameter is a system dependent name of the object file. - */ -extern DECLSPEC void * SDLCALL SDL_LoadObject(const char *sofile); - -/** - * Given an object handle, this function looks up the address of the - * named function in the shared object and returns it. This address - * is no longer valid after calling SDL_UnloadObject(). - */ -extern DECLSPEC void * SDLCALL SDL_LoadFunction(void *handle, const char *name); - -/** Unload a shared object from memory */ -extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_loadso_h */ diff --git a/mednafen/sdl/include/SDL_main.h b/mednafen/sdl/include/SDL_main.h deleted file mode 100644 index 9867d09ba5..0000000000 --- a/mednafen/sdl/include/SDL_main.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_main_h -#define _SDL_main_h - -#include "SDL_stdinc.h" - -/** @file SDL_main.h - * Redefine main() on Win32 and MacOS so that it is called by winmain.c - */ - -#if defined(__WIN32__) || \ - (defined(__MWERKS__) && !defined(__BEOS__)) || \ - defined(__MACOS__) || defined(__MACOSX__) || \ - defined(__SYMBIAN32__) || defined(QWS) - -#ifdef __cplusplus -#define C_LINKAGE "C" -#else -#define C_LINKAGE -#endif /* __cplusplus */ - -/** The application's main() function must be called with C linkage, - * and should be declared like this: - * @code - * #ifdef __cplusplus - * extern "C" - * #endif - * int main(int argc, char *argv[]) - * { - * } - * @endcode - */ -#define main SDL_main - -/** The prototype for the application's main() function */ -extern C_LINKAGE int SDL_main(int argc, char *argv[]); - - -/** @name From the SDL library code -- needed for registering the app on Win32 */ -/*@{*/ -#ifdef __WIN32__ - -#include "begin_code.h" -#ifdef __cplusplus -extern "C" { -#endif - -/** This should be called from your WinMain() function, if any */ -extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); -/** This can also be called, but is no longer necessary */ -extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst); -/** This can also be called, but is no longer necessary (SDL_Quit calls it) */ -extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); -#ifdef __cplusplus -} -#endif -#include "close_code.h" -#endif -/*@}*/ - -/** @name From the SDL library code -- needed for registering QuickDraw on MacOS */ -/*@{*/ -#if defined(__MACOS__) - -#include "begin_code.h" -#ifdef __cplusplus -extern "C" { -#endif - -/** Forward declaration so we don't need to include QuickDraw.h */ -struct QDGlobals; - -/** This should be called from your main() function, if any */ -extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); - -#ifdef __cplusplus -} -#endif -#include "close_code.h" -#endif -/*@}*/ - -#endif /* Need to redefine main()? */ - -#endif /* _SDL_main_h */ diff --git a/mednafen/sdl/include/SDL_mouse.h b/mednafen/sdl/include/SDL_mouse.h deleted file mode 100644 index 5d16b45383..0000000000 --- a/mednafen/sdl/include/SDL_mouse.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_mouse.h - * Include file for SDL mouse event handling - */ - -#ifndef _SDL_mouse_h -#define _SDL_mouse_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_video.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct WMcursor WMcursor; /**< Implementation dependent */ -typedef struct SDL_Cursor { - SDL_Rect area; /**< The area of the mouse cursor */ - Sint16 hot_x, hot_y; /**< The "tip" of the cursor */ - Uint8 *data; /**< B/W cursor data */ - Uint8 *mask; /**< B/W cursor mask */ - Uint8 *save[2]; /**< Place to save cursor area */ - WMcursor *wm_cursor; /**< Window-manager cursor */ -} SDL_Cursor; - -/* Function prototypes */ -/** - * Retrieve the current state of the mouse. - * The current button state is returned as a button bitmask, which can - * be tested using the SDL_BUTTON(X) macros, and x and y are set to the - * current mouse cursor position. You can pass NULL for either x or y. - */ -extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y); - -/** - * Retrieve the current state of the mouse. - * The current button state is returned as a button bitmask, which can - * be tested using the SDL_BUTTON(X) macros, and x and y are set to the - * mouse deltas since the last call to SDL_GetRelativeMouseState(). - */ -extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); - -/** - * Set the position of the mouse cursor (generates a mouse motion event) - */ -extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y); - -/** - * Create a cursor using the specified data and mask (in MSB format). - * The cursor width must be a multiple of 8 bits. - * - * The cursor is created in black and white according to the following: - * data mask resulting pixel on screen - * 0 1 White - * 1 1 Black - * 0 0 Transparent - * 1 0 Inverted color if possible, black if not. - * - * Cursors created with this function must be freed with SDL_FreeCursor(). - */ -extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor - (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); - -/** - * Set the currently active cursor to the specified one. - * If the cursor is currently visible, the change will be immediately - * represented on the display. - */ -extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor); - -/** - * Returns the currently active cursor. - */ -extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void); - -/** - * Deallocates a cursor created with SDL_CreateCursor(). - */ -extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor); - -/** - * Toggle whether or not the cursor is shown on the screen. - * The cursor start off displayed, but can be turned off. - * SDL_ShowCursor() returns 1 if the cursor was being displayed - * before the call, or 0 if it was not. You can query the current - * state by passing a 'toggle' value of -1. - */ -extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); - -/*@{*/ -/** Used as a mask when testing buttons in buttonstate - * Button 1: Left mouse button - * Button 2: Middle mouse button - * Button 3: Right mouse button - * Button 4: Mouse wheel up (may also be a real button) - * Button 5: Mouse wheel down (may also be a real button) - */ -#define SDL_BUTTON(X) (1 << ((X)-1)) -#define SDL_BUTTON_LEFT 1 -#define SDL_BUTTON_MIDDLE 2 -#define SDL_BUTTON_RIGHT 3 -#define SDL_BUTTON_WHEELUP 4 -#define SDL_BUTTON_WHEELDOWN 5 -#define SDL_BUTTON_X1 6 -#define SDL_BUTTON_X2 7 -#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) -#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) -#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) -#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) -#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_mouse_h */ diff --git a/mednafen/sdl/include/SDL_mutex.h b/mednafen/sdl/include/SDL_mutex.h deleted file mode 100644 index e6f4f9fcb6..0000000000 --- a/mednafen/sdl/include/SDL_mutex.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_mutex_h -#define _SDL_mutex_h - -/** @file SDL_mutex.h - * Functions to provide thread synchronization primitives - * - * @note These are independent of the other SDL routines. - */ - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** Synchronization functions which can time out return this value - * if they time out. - */ -#define SDL_MUTEX_TIMEDOUT 1 - -/** This is the timeout value which corresponds to never time out */ -#define SDL_MUTEX_MAXWAIT (~(Uint32)0) - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name Mutex functions */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** The SDL mutex structure, defined in SDL_mutex.c */ -struct SDL_mutex; -typedef struct SDL_mutex SDL_mutex; - -/** Create a mutex, initialized unlocked */ -extern DECLSPEC SDL_mutex * SDLCALL SDL_CreateMutex(void); - -#define SDL_LockMutex(m) SDL_mutexP(m) -/** Lock the mutex - * @return 0, or -1 on error - */ -extern DECLSPEC int SDLCALL SDL_mutexP(SDL_mutex *mutex); - -#define SDL_UnlockMutex(m) SDL_mutexV(m) -/** Unlock the mutex - * @return 0, or -1 on error - * - * It is an error to unlock a mutex that has not been locked by - * the current thread, and doing so results in undefined behavior. - */ -extern DECLSPEC int SDLCALL SDL_mutexV(SDL_mutex *mutex); - -/** Destroy a mutex */ -extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex *mutex); - -/*@}*/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name Semaphore functions */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** The SDL semaphore structure, defined in SDL_sem.c */ -struct SDL_semaphore; -typedef struct SDL_semaphore SDL_sem; - -/** Create a semaphore, initialized with value, returns NULL on failure. */ -extern DECLSPEC SDL_sem * SDLCALL SDL_CreateSemaphore(Uint32 initial_value); - -/** Destroy a semaphore */ -extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem *sem); - -/** - * This function suspends the calling thread until the semaphore pointed - * to by sem has a positive count. It then atomically decreases the semaphore - * count. - */ -extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem *sem); - -/** Non-blocking variant of SDL_SemWait(). - * @return 0 if the wait succeeds, - * SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem *sem); - -/** Variant of SDL_SemWait() with a timeout in milliseconds, returns 0 if - * the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in - * the allotted time, and -1 on error. - * - * On some platforms this function is implemented by looping with a delay - * of 1 ms, and so should be avoided if possible. - */ -extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms); - -/** Atomically increases the semaphore's count (not blocking). - * @return 0, or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem *sem); - -/** Returns the current count of the semaphore */ -extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem *sem); - -/*@}*/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name Condition_variable_functions */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/*@{*/ -/** The SDL condition variable structure, defined in SDL_cond.c */ -struct SDL_cond; -typedef struct SDL_cond SDL_cond; -/*@}*/ - -/** Create a condition variable */ -extern DECLSPEC SDL_cond * SDLCALL SDL_CreateCond(void); - -/** Destroy a condition variable */ -extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond *cond); - -/** Restart one of the threads that are waiting on the condition variable, - * @return 0 or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond *cond); - -/** Restart all threads that are waiting on the condition variable, - * @return 0 or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond *cond); - -/** Wait on the condition variable, unlocking the provided mutex. - * The mutex must be locked before entering this function! - * The mutex is re-locked once the condition variable is signaled. - * @return 0 when it is signaled, or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); - -/** Waits for at most 'ms' milliseconds, and returns 0 if the condition - * variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not - * signaled in the allotted time, and -1 on error. - * On some platforms this function is implemented by looping with a delay - * of 1 ms, and so should be avoided if possible. - */ -extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms); - -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_mutex_h */ - diff --git a/mednafen/sdl/include/SDL_name.h b/mednafen/sdl/include/SDL_name.h deleted file mode 100644 index 84d5e39a09..0000000000 --- a/mednafen/sdl/include/SDL_name.h +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef _SDLname_h_ -#define _SDLname_h_ - -#if defined(__STDC__) || defined(__cplusplus) -#define NeedFunctionPrototypes 1 -#endif - -#define SDL_NAME(X) SDL_##X - -#endif /* _SDLname_h_ */ diff --git a/mednafen/sdl/include/SDL_platform.h b/mednafen/sdl/include/SDL_platform.h deleted file mode 100644 index 38f7c32aa0..0000000000 --- a/mednafen/sdl/include/SDL_platform.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_platform.h - * Try to get a standard set of platform defines - */ - -#ifndef _SDL_platform_h -#define _SDL_platform_h - -#if defined(_AIX) -#undef __AIX__ -#define __AIX__ 1 -#endif -#if defined(__BEOS__) -#undef __BEOS__ -#define __BEOS__ 1 -#endif -#if defined(__HAIKU__) -#undef __HAIKU__ -#define __HAIKU__ 1 -#endif -#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) -#undef __BSDI__ -#define __BSDI__ 1 -#endif -#if defined(_arch_dreamcast) -#undef __DREAMCAST__ -#define __DREAMCAST__ 1 -#endif -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) -#undef __FREEBSD__ -#define __FREEBSD__ 1 -#endif -#if defined(__HAIKU__) -#undef __HAIKU__ -#define __HAIKU__ 1 -#endif -#if defined(hpux) || defined(__hpux) || defined(__hpux__) -#undef __HPUX__ -#define __HPUX__ 1 -#endif -#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) -#undef __IRIX__ -#define __IRIX__ 1 -#endif -#if defined(linux) || defined(__linux) || defined(__linux__) -#undef __LINUX__ -#define __LINUX__ 1 -#endif -#if defined(__APPLE__) -#undef __MACOSX__ -#define __MACOSX__ 1 -#elif defined(macintosh) -#undef __MACOS__ -#define __MACOS__ 1 -#endif -#if defined(__NetBSD__) -#undef __NETBSD__ -#define __NETBSD__ 1 -#endif -#if defined(__OpenBSD__) -#undef __OPENBSD__ -#define __OPENBSD__ 1 -#endif -#if defined(__OS2__) -#undef __OS2__ -#define __OS2__ 1 -#endif -#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) -#undef __OSF__ -#define __OSF__ 1 -#endif -#if defined(__QNXNTO__) -#undef __QNXNTO__ -#define __QNXNTO__ 1 -#endif -#if defined(riscos) || defined(__riscos) || defined(__riscos__) -#undef __RISCOS__ -#define __RISCOS__ 1 -#endif -#if defined(__SVR4) -#undef __SOLARIS__ -#define __SOLARIS__ 1 -#endif -#if defined(WIN32) || defined(_WIN32) -#undef __WIN32__ -#define __WIN32__ 1 -#endif - -#endif /* _SDL_platform_h */ diff --git a/mednafen/sdl/include/SDL_quit.h b/mednafen/sdl/include/SDL_quit.h deleted file mode 100644 index f8bf26693d..0000000000 --- a/mednafen/sdl/include/SDL_quit.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_quit.h - * Include file for SDL quit event handling - */ - -#ifndef _SDL_quit_h -#define _SDL_quit_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -/** @file SDL_quit.h - * An SDL_QUITEVENT is generated when the user tries to close the application - * window. If it is ignored or filtered out, the window will remain open. - * If it is not ignored or filtered, it is queued normally and the window - * is allowed to close. When the window is closed, screen updates will - * complete, but have no effect. - * - * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) - * and SIGTERM (system termination request), if handlers do not already - * exist, that generate SDL_QUITEVENT events as well. There is no way - * to determine the cause of an SDL_QUITEVENT, but setting a signal - * handler in your application will override the default generation of - * quit events for that signal. - */ - -/** @file SDL_quit.h - * There are no functions directly affecting the quit event - */ - -#define SDL_QuitRequested() \ - (SDL_PumpEvents(), SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUITMASK)) - -#endif /* _SDL_quit_h */ diff --git a/mednafen/sdl/include/SDL_rwops.h b/mednafen/sdl/include/SDL_rwops.h deleted file mode 100644 index c4b24ed109..0000000000 --- a/mednafen/sdl/include/SDL_rwops.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_rwops.h - * This file provides a general interface for SDL to read and write - * data sources. It can easily be extended to files, memory, etc. - */ - -#ifndef _SDL_rwops_h -#define _SDL_rwops_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** This is the read/write operation structure -- very basic */ - -typedef struct SDL_RWops { - /** Seek to 'offset' relative to whence, one of stdio's whence values: - * SEEK_SET, SEEK_CUR, SEEK_END - * Returns the final offset in the data source. - */ - int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence); - - /** Read up to 'maxnum' objects each of size 'size' from the data - * source to the area pointed at by 'ptr'. - * Returns the number of objects read, or -1 if the read failed. - */ - int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); - - /** Write exactly 'num' objects each of size 'objsize' from the area - * pointed at by 'ptr' to data source. - * Returns 'num', or -1 if the write failed. - */ - int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num); - - /** Close and free an allocated SDL_FSops structure */ - int (SDLCALL *close)(struct SDL_RWops *context); - - Uint32 type; - union { -#if defined(__WIN32__) && !defined(__SYMBIAN32__) - struct { - int append; - void *h; - struct { - void *data; - int size; - int left; - } buffer; - } win32io; -#endif -#ifdef HAVE_STDIO_H - struct { - int autoclose; - FILE *fp; - } stdio; -#endif - struct { - Uint8 *base; - Uint8 *here; - Uint8 *stop; - } mem; - struct { - void *data1; - } unknown; - } hidden; - -} SDL_RWops; - - -/** @name Functions to create SDL_RWops structures from various data sources */ -/*@{*/ - -extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode); - -#ifdef HAVE_STDIO_H -extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose); -#endif - -extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size); -extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size); - -extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void); -extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area); - -/*@}*/ - -/** @name Seek Reference Points */ -/*@{*/ -#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ -#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ -#define RW_SEEK_END 2 /**< Seek relative to the end of data */ -/*@}*/ - -/** @name Macros to easily read and write from an SDL_RWops structure */ -/*@{*/ -#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence) -#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR) -#define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n) -#define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n) -#define SDL_RWclose(ctx) (ctx)->close(ctx) -/*@}*/ - -/** @name Read an item of the specified endianness and return in native format */ -/*@{*/ -extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src); -extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src); -extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src); -extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src); -extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src); -extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src); -/*@}*/ - -/** @name Write an item of native format to the specified endianness */ -/*@{*/ -extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value); -extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value); -extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value); -extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value); -extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value); -extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value); -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_rwops_h */ diff --git a/mednafen/sdl/include/SDL_stdinc.h b/mednafen/sdl/include/SDL_stdinc.h deleted file mode 100644 index 24b31d6b60..0000000000 --- a/mednafen/sdl/include/SDL_stdinc.h +++ /dev/null @@ -1,620 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_stdinc.h - * This is a general header that includes C language support - */ - -#ifndef _SDL_stdinc_h -#define _SDL_stdinc_h - -#include "SDL_config.h" - - -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDIO_H -#include -#endif -#if defined(STDC_HEADERS) -# include -# include -# include -#else -# if defined(HAVE_STDLIB_H) -# include -# elif defined(HAVE_MALLOC_H) -# include -# endif -# if defined(HAVE_STDDEF_H) -# include -# endif -# if defined(HAVE_STDARG_H) -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#if defined(HAVE_INTTYPES_H) -# include -#elif defined(HAVE_STDINT_H) -# include -#endif -#ifdef HAVE_CTYPE_H -# include -#endif -#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) -# include -#endif - -/** The number of elements in an array */ -#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) -#define SDL_TABLESIZE(table) SDL_arraysize(table) - -/* Use proper C++ casts when compiled as C++ to be compatible with the option - -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above. */ -#ifdef __cplusplus -#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) -#define SDL_static_cast(type, expression) static_cast(expression) -#else -#define SDL_reinterpret_cast(type, expression) ((type)(expression)) -#define SDL_static_cast(type, expression) ((type)(expression)) -#endif - -/** @name Basic data types */ -/*@{*/ -typedef enum { - SDL_FALSE = 0, - SDL_TRUE = 1 -} SDL_bool; - -typedef int8_t Sint8; -typedef uint8_t Uint8; -typedef int16_t Sint16; -typedef uint16_t Uint16; -typedef int32_t Sint32; -typedef uint32_t Uint32; - -#ifdef SDL_HAS_64BIT_TYPE -typedef int64_t Sint64; -#ifndef SYMBIAN32_GCCE -typedef uint64_t Uint64; -#endif -#else -/* This is really just a hack to prevent the compiler from complaining */ -typedef struct { - Uint32 hi; - Uint32 lo; -} Uint64, Sint64; -#endif - -/*@}*/ - -/** @name Make sure the types really have the right sizes */ -/*@{*/ -#define SDL_COMPILE_TIME_ASSERT(name, x) \ - typedef int SDL_dummy_ ## name[(x) * 2 - 1] - -SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); -SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); -SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); -SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); -SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); -SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); -SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); -SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); -/*@}*/ - -/** @name Enum Size Check - * Check to make sure enums are the size of ints, for structure packing. - * For both Watcom C/C++ and Borland C/C++ the compiler option that makes - * enums having the size of an int must be enabled. - * This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). - */ -/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ -#ifdef __MWERKS__ -#pragma enumsalwaysint on -#endif - -typedef enum { - DUMMY_ENUM_VALUE -} SDL_DUMMY_ENUM; - -#ifndef __NDS__ -SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); -#endif -/*@}*/ - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef HAVE_MALLOC -#define SDL_malloc malloc -#else -extern DECLSPEC void * SDLCALL SDL_malloc(size_t size); -#endif - -#ifdef HAVE_CALLOC -#define SDL_calloc calloc -#else -extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size); -#endif - -#ifdef HAVE_REALLOC -#define SDL_realloc realloc -#else -extern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size); -#endif - -#ifdef HAVE_FREE -#define SDL_free free -#else -extern DECLSPEC void SDLCALL SDL_free(void *mem); -#endif - -#if defined(HAVE_ALLOCA) && !defined(alloca) -# if defined(HAVE_ALLOCA_H) -# include -# elif defined(__GNUC__) -# define alloca __builtin_alloca -# elif defined(_MSC_VER) -# include -# define alloca _alloca -# elif defined(__WATCOMC__) -# include -# elif defined(__BORLANDC__) -# include -# elif defined(__DMC__) -# include -# elif defined(__AIX__) - #pragma alloca -# elif defined(__MRC__) - void *alloca (unsigned); -# else - char *alloca (); -# endif -#endif -#ifdef HAVE_ALLOCA -#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) -#define SDL_stack_free(data) -#else -#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) -#define SDL_stack_free(data) SDL_free(data) -#endif - -#ifdef HAVE_GETENV -#define SDL_getenv getenv -#else -extern DECLSPEC char * SDLCALL SDL_getenv(const char *name); -#endif - -#ifdef HAVE_PUTENV -#define SDL_putenv putenv -#else -extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); -#endif - -#ifdef HAVE_QSORT -#define SDL_qsort qsort -#else -extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, - int (*compare)(const void *, const void *)); -#endif - -#ifdef HAVE_ABS -#define SDL_abs abs -#else -#define SDL_abs(X) ((X) < 0 ? -(X) : (X)) -#endif - -#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) -#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) - -#ifdef HAVE_CTYPE_H -#define SDL_isdigit(X) isdigit(X) -#define SDL_isspace(X) isspace(X) -#define SDL_toupper(X) toupper(X) -#define SDL_tolower(X) tolower(X) -#else -#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9')) -#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n')) -#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X)) -#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X)) -#endif - -#ifdef HAVE_MEMSET -#define SDL_memset memset -#else -extern DECLSPEC void * SDLCALL SDL_memset(void *dst, int c, size_t len); -#endif - -#if defined(__GNUC__) && defined(i386) -#define SDL_memset4(dst, val, len) \ -do { \ - int u0, u1, u2; \ - __asm__ __volatile__ ( \ - "cld\n\t" \ - "rep ; stosl\n\t" \ - : "=&D" (u0), "=&a" (u1), "=&c" (u2) \ - : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, len)) \ - : "memory" ); \ -} while(0) -#endif -#ifndef SDL_memset4 -#define SDL_memset4(dst, val, len) \ -do { \ - unsigned _count = (len); \ - unsigned _n = (_count + 3) / 4; \ - Uint32 *_p = SDL_static_cast(Uint32 *, dst); \ - Uint32 _val = (val); \ - if (len == 0) break; \ - switch (_count % 4) { \ - case 0: do { *_p++ = _val; \ - case 3: *_p++ = _val; \ - case 2: *_p++ = _val; \ - case 1: *_p++ = _val; \ - } while ( --_n ); \ - } \ -} while(0) -#endif - -/* We can count on memcpy existing on Mac OS X and being well-tuned. */ -#if defined(__MACH__) && defined(__APPLE__) -#define SDL_memcpy(dst, src, len) memcpy(dst, src, len) -#elif defined(__GNUC__) && defined(i386) -#define SDL_memcpy(dst, src, len) \ -do { \ - int u0, u1, u2; \ - __asm__ __volatile__ ( \ - "cld\n\t" \ - "rep ; movsl\n\t" \ - "testb $2,%b4\n\t" \ - "je 1f\n\t" \ - "movsw\n" \ - "1:\ttestb $1,%b4\n\t" \ - "je 2f\n\t" \ - "movsb\n" \ - "2:" \ - : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ - : "0" (SDL_static_cast(unsigned, len)/4), "q" (len), "1" (dst),"2" (src) \ - : "memory" ); \ -} while(0) -#endif -#ifndef SDL_memcpy -#ifdef HAVE_MEMCPY -#define SDL_memcpy memcpy -#elif defined(HAVE_BCOPY) -#define SDL_memcpy(d, s, n) bcopy((s), (d), (n)) -#else -extern DECLSPEC void * SDLCALL SDL_memcpy(void *dst, const void *src, size_t len); -#endif -#endif - -/* We can count on memcpy existing on Mac OS X and being well-tuned. */ -#if defined(__MACH__) && defined(__APPLE__) -#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4) -#elif defined(__GNUC__) && defined(i386) -#define SDL_memcpy4(dst, src, len) \ -do { \ - int ecx, edi, esi; \ - __asm__ __volatile__ ( \ - "cld\n\t" \ - "rep ; movsl" \ - : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \ - : "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src) \ - : "memory" ); \ -} while(0) -#endif -#ifndef SDL_memcpy4 -#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2) -#endif - -#if defined(__GNUC__) && defined(i386) -#define SDL_revcpy(dst, src, len) \ -do { \ - int u0, u1, u2; \ - char *dstp = SDL_static_cast(char *, dst); \ - char *srcp = SDL_static_cast(char *, src); \ - int n = (len); \ - if ( n >= 4 ) { \ - __asm__ __volatile__ ( \ - "std\n\t" \ - "rep ; movsl\n\t" \ - "cld\n\t" \ - : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ - : "0" (n >> 2), \ - "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ - : "memory" ); \ - } \ - switch (n & 3) { \ - case 3: dstp[2] = srcp[2]; \ - case 2: dstp[1] = srcp[1]; \ - case 1: dstp[0] = srcp[0]; \ - break; \ - default: \ - break; \ - } \ -} while(0) -#endif -#ifndef SDL_revcpy -extern DECLSPEC void * SDLCALL SDL_revcpy(void *dst, const void *src, size_t len); -#endif - -#ifdef HAVE_MEMMOVE -#define SDL_memmove memmove -#elif defined(HAVE_BCOPY) -#define SDL_memmove(d, s, n) bcopy((s), (d), (n)) -#else -#define SDL_memmove(dst, src, len) \ -do { \ - if ( dst < src ) { \ - SDL_memcpy(dst, src, len); \ - } else { \ - SDL_revcpy(dst, src, len); \ - } \ -} while(0) -#endif - -#ifdef HAVE_MEMCMP -#define SDL_memcmp memcmp -#else -extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); -#endif - -#ifdef HAVE_STRLEN -#define SDL_strlen strlen -#else -extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string); -#endif - -#ifdef HAVE_STRLCPY -#define SDL_strlcpy strlcpy -#else -extern DECLSPEC size_t SDLCALL SDL_strlcpy(char *dst, const char *src, size_t maxlen); -#endif - -#ifdef HAVE_STRLCAT -#define SDL_strlcat strlcat -#else -extern DECLSPEC size_t SDLCALL SDL_strlcat(char *dst, const char *src, size_t maxlen); -#endif - -#ifdef HAVE_STRDUP -#define SDL_strdup strdup -#else -extern DECLSPEC char * SDLCALL SDL_strdup(const char *string); -#endif - -#ifdef HAVE__STRREV -#define SDL_strrev _strrev -#else -extern DECLSPEC char * SDLCALL SDL_strrev(char *string); -#endif - -#ifdef HAVE__STRUPR -#define SDL_strupr _strupr -#else -extern DECLSPEC char * SDLCALL SDL_strupr(char *string); -#endif - -#ifdef HAVE__STRLWR -#define SDL_strlwr _strlwr -#else -extern DECLSPEC char * SDLCALL SDL_strlwr(char *string); -#endif - -#ifdef HAVE_STRCHR -#define SDL_strchr strchr -#elif defined(HAVE_INDEX) -#define SDL_strchr index -#else -extern DECLSPEC char * SDLCALL SDL_strchr(const char *string, int c); -#endif - -#ifdef HAVE_STRRCHR -#define SDL_strrchr strrchr -#elif defined(HAVE_RINDEX) -#define SDL_strrchr rindex -#else -extern DECLSPEC char * SDLCALL SDL_strrchr(const char *string, int c); -#endif - -#ifdef HAVE_STRSTR -#define SDL_strstr strstr -#else -extern DECLSPEC char * SDLCALL SDL_strstr(const char *haystack, const char *needle); -#endif - -#ifdef HAVE_ITOA -#define SDL_itoa itoa -#else -#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix) -#endif - -#ifdef HAVE__LTOA -#define SDL_ltoa _ltoa -#else -extern DECLSPEC char * SDLCALL SDL_ltoa(long value, char *string, int radix); -#endif - -#ifdef HAVE__UITOA -#define SDL_uitoa _uitoa -#else -#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix) -#endif - -#ifdef HAVE__ULTOA -#define SDL_ultoa _ultoa -#else -extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int radix); -#endif - -#ifdef HAVE_STRTOL -#define SDL_strtol strtol -#else -extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base); -#endif - -#ifdef HAVE_STRTOUL -#define SDL_strtoul strtoul -#else -extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, char **endp, int base); -#endif - -#ifdef SDL_HAS_64BIT_TYPE - -#ifdef HAVE__I64TOA -#define SDL_lltoa _i64toa -#else -extern DECLSPEC char* SDLCALL SDL_lltoa(Sint64 value, char *string, int radix); -#endif - -#ifdef HAVE__UI64TOA -#define SDL_ulltoa _ui64toa -#else -extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix); -#endif - -#ifdef HAVE_STRTOLL -#define SDL_strtoll strtoll -#else -extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base); -#endif - -#ifdef HAVE_STRTOULL -#define SDL_strtoull strtoull -#else -extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, int base); -#endif - -#endif /* SDL_HAS_64BIT_TYPE */ - -#ifdef HAVE_STRTOD -#define SDL_strtod strtod -#else -extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp); -#endif - -#ifdef HAVE_ATOI -#define SDL_atoi atoi -#else -#define SDL_atoi(X) SDL_strtol(X, NULL, 0) -#endif - -#ifdef HAVE_ATOF -#define SDL_atof atof -#else -#define SDL_atof(X) SDL_strtod(X, NULL) -#endif - -#ifdef HAVE_STRCMP -#define SDL_strcmp strcmp -#else -extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); -#endif - -#ifdef HAVE_STRNCMP -#define SDL_strncmp strncmp -#else -extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); -#endif - -#ifdef HAVE_STRCASECMP -#define SDL_strcasecmp strcasecmp -#elif defined(HAVE__STRICMP) -#define SDL_strcasecmp _stricmp -#else -extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); -#endif - -#ifdef HAVE_STRNCASECMP -#define SDL_strncasecmp strncasecmp -#elif defined(HAVE__STRNICMP) -#define SDL_strncasecmp _strnicmp -#else -extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen); -#endif - -#ifdef HAVE_SSCANF -#define SDL_sscanf sscanf -#else -extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...); -#endif - -#ifdef HAVE_SNPRINTF -#define SDL_snprintf snprintf -#else -extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...); -#endif - -#ifdef HAVE_VSNPRINTF -#define SDL_vsnprintf vsnprintf -#else -extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap); -#endif - -/** @name SDL_ICONV Error Codes - * The SDL implementation of iconv() returns these error codes - */ -/*@{*/ -#define SDL_ICONV_ERROR (size_t)-1 -#define SDL_ICONV_E2BIG (size_t)-2 -#define SDL_ICONV_EILSEQ (size_t)-3 -#define SDL_ICONV_EINVAL (size_t)-4 -/*@}*/ - -#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) -#define SDL_iconv_t iconv_t -#define SDL_iconv_open iconv_open -#define SDL_iconv_close iconv_close -#else -typedef struct _SDL_iconv_t *SDL_iconv_t; -extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, const char *fromcode); -extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); -#endif -extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); -/** This function converts a string between encodings in one pass, returning a - * string that must be freed with SDL_free() or NULL on error. - */ -extern DECLSPEC char * SDLCALL SDL_iconv_string(const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft); -#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) -#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) -#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_stdinc_h */ diff --git a/mednafen/sdl/include/SDL_syswm.h b/mednafen/sdl/include/SDL_syswm.h deleted file mode 100644 index e2447fd402..0000000000 --- a/mednafen/sdl/include/SDL_syswm.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_syswm.h - * Include file for SDL custom system window manager hooks - */ - -#ifndef _SDL_syswm_h -#define _SDL_syswm_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_version.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @file SDL_syswm.h - * Your application has access to a special type of event 'SDL_SYSWMEVENT', - * which contains window-manager specific information and arrives whenever - * an unhandled window event occurs. This event is ignored by default, but - * you can enable it with SDL_EventState() - */ -#ifdef SDL_PROTOTYPES_ONLY -struct SDL_SysWMinfo; -typedef struct SDL_SysWMinfo SDL_SysWMinfo; -#else - -/* This is the structure for custom window manager events */ -#if defined(SDL_VIDEO_DRIVER_X11) -#if defined(__APPLE__) && defined(__MACH__) -/* conflicts with Quickdraw.h */ -#define Cursor X11Cursor -#endif - -#include -#include - -#if defined(__APPLE__) && defined(__MACH__) -/* matches the re-define above */ -#undef Cursor -#endif - -/** These are the various supported subsystems under UNIX */ -typedef enum { - SDL_SYSWM_X11 -} SDL_SYSWM_TYPE; - -/** The UNIX custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - SDL_SYSWM_TYPE subsystem; - union { - XEvent xevent; - } event; -}; - -/** The UNIX custom window manager information structure. - * When this structure is returned, it holds information about which - * low level system it is using, and will be one of SDL_SYSWM_TYPE. - */ -typedef struct SDL_SysWMinfo { - SDL_version version; - SDL_SYSWM_TYPE subsystem; - union { - struct { - Display *display; /**< The X11 display */ - Window window; /**< The X11 display window */ - /** These locking functions should be called around - * any X11 functions using the display variable, - * but not the gfxdisplay variable. - * They lock the event thread, so should not be - * called around event functions or from event filters. - */ - /*@{*/ - void (*lock_func)(void); - void (*unlock_func)(void); - /*@}*/ - - /** @name Introduced in SDL 1.0.2 */ - /*@{*/ - Window fswindow; /**< The X11 fullscreen window */ - Window wmwindow; /**< The X11 managed input window */ - /*@}*/ - - /** @name Introduced in SDL 1.2.12 */ - /*@{*/ - Display *gfxdisplay; /**< The X11 display to which rendering is done */ - /*@}*/ - } x11; - } info; -} SDL_SysWMinfo; - -#elif defined(SDL_VIDEO_DRIVER_NANOX) -#include - -/** The generic custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - int data; -}; - -/** The windows custom window manager information structure */ -typedef struct SDL_SysWMinfo { - SDL_version version ; - GR_WINDOW_ID window ; /* The display window */ -} SDL_SysWMinfo; - -#elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) -#define WIN32_LEAN_AND_MEAN -#include - -/** The windows custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - HWND hwnd; /**< The window for the message */ - UINT msg; /**< The type of message */ - WPARAM wParam; /**< WORD message parameter */ - LPARAM lParam; /**< LONG message parameter */ -}; - -/** The windows custom window manager information structure */ -typedef struct SDL_SysWMinfo { - SDL_version version; - HWND window; /**< The Win32 display window */ - HGLRC hglrc; /**< The OpenGL context, if any */ -} SDL_SysWMinfo; - -#elif defined(SDL_VIDEO_DRIVER_RISCOS) - -/** RISC OS custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - int eventCode; /**< The window for the message */ - int pollBlock[64]; -}; - -/** The RISC OS custom window manager information structure */ -typedef struct SDL_SysWMinfo { - SDL_version version; - int wimpVersion; /**< Wimp version running under */ - int taskHandle; /**< The RISC OS task handle */ - int window; /**< The RISC OS display window */ -} SDL_SysWMinfo; - -#elif defined(SDL_VIDEO_DRIVER_PHOTON) -#include -#include - -/** The QNX custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - int data; -}; - -/** The QNX custom window manager information structure */ -typedef struct SDL_SysWMinfo { - SDL_version version; - int data; -} SDL_SysWMinfo; - -#else - -/** The generic custom event structure */ -struct SDL_SysWMmsg { - SDL_version version; - int data; -}; - -/** The generic custom window manager information structure */ -typedef struct SDL_SysWMinfo { - SDL_version version; - int data; -} SDL_SysWMinfo; - -#endif /* video driver type */ - -#endif /* SDL_PROTOTYPES_ONLY */ - -/* Function prototypes */ -/** - * This function gives you custom hooks into the window manager information. - * It fills the structure pointed to by 'info' with custom information and - * returns 1 if the function is implemented. If it's not implemented, or - * the version member of the 'info' structure is invalid, it returns 0. - * - * You typically use this function like this: - * @code - * SDL_SysWMInfo info; - * SDL_VERSION(&info.version); - * if ( SDL_GetWMInfo(&info) ) { ... } - * @endcode - */ -extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_syswm_h */ diff --git a/mednafen/sdl/include/SDL_thread.h b/mednafen/sdl/include/SDL_thread.h deleted file mode 100644 index 67f87733df..0000000000 --- a/mednafen/sdl/include/SDL_thread.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_thread_h -#define _SDL_thread_h - -/** @file SDL_thread.h - * Header for the SDL thread management routines - * - * @note These are independent of the other SDL routines. - */ - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -/* Thread synchronization primitives */ -#include "SDL_mutex.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** The SDL thread structure, defined in SDL_thread.c */ -struct SDL_Thread; -typedef struct SDL_Thread SDL_Thread; - -/** Create a thread */ -#if ((defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)) && !defined(__SYMBIAN32__) -/** - * We compile SDL into a DLL on OS/2. This means, that it's the DLL which - * creates a new thread for the calling process with the SDL_CreateThread() - * API. There is a problem with this, that only the RTL of the SDL.DLL will - * be initialized for those threads, and not the RTL of the calling application! - * To solve this, we make a little hack here. - * We'll always use the caller's _beginthread() and _endthread() APIs to - * start a new thread. This way, if it's the SDL.DLL which uses this API, - * then the RTL of SDL.DLL will be used to create the new thread, and if it's - * the application, then the RTL of the application will be used. - * So, in short: - * Always use the _beginthread() and _endthread() of the calling runtime library! - */ -#define SDL_PASSED_BEGINTHREAD_ENDTHREAD -#ifndef _WIN32_WCE -#include /* This has _beginthread() and _endthread() defined! */ -#endif - -#ifdef __OS2__ -typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); -typedef void (*pfnSDL_CurrentEndThread)(void); -#elif __GNUC__ -typedef unsigned long (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, - unsigned (__stdcall *func)(void *), void *arg, - unsigned, unsigned *threadID); -typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); -#else -typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, - unsigned (__stdcall *func)(void *), void *arg, - unsigned, unsigned *threadID); -typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); -#endif - -extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); - -#ifdef __OS2__ -#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread) -#elif defined(_WIN32_WCE) -#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL) -#else -#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex) -#endif -#else -extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data); -#endif - -/** Get the 32-bit thread identifier for the current thread */ -extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void); - -/** Get the 32-bit thread identifier for the specified thread, - * equivalent to SDL_ThreadID() if the specified thread is NULL. - */ -extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread *thread); - -/** Wait for a thread to finish. - * The return code for the thread function is placed in the area - * pointed to by 'status', if 'status' is not NULL. - */ -extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread *thread, int *status); - -/** Forcefully kill a thread without worrying about its state */ -extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread *thread); - - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_thread_h */ diff --git a/mednafen/sdl/include/SDL_timer.h b/mednafen/sdl/include/SDL_timer.h deleted file mode 100644 index e724418556..0000000000 --- a/mednafen/sdl/include/SDL_timer.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_timer_h -#define _SDL_timer_h - -/** @file SDL_timer.h - * Header for the SDL time management routines - */ - -#include "SDL_stdinc.h" -#include "SDL_error.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** This is the OS scheduler timeslice, in milliseconds */ -#define SDL_TIMESLICE 10 - -/** This is the maximum resolution of the SDL timer on all platforms */ -#define TIMER_RESOLUTION 10 /**< Experimentally determined */ - -/** - * Get the number of milliseconds since the SDL library initialization. - * Note that this value wraps if the program runs for more than ~49 days. - */ -extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); - -/** Wait a specified number of milliseconds before returning */ -extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); - -/** Function prototype for the timer callback function */ -typedef Uint32 (SDLCALL *SDL_TimerCallback)(Uint32 interval); - -/** - * Set a callback to run after the specified number of milliseconds has - * elapsed. The callback function is passed the current timer interval - * and returns the next timer interval. If the returned value is the - * same as the one passed in, the periodic alarm continues, otherwise a - * new alarm is scheduled. If the callback returns 0, the periodic alarm - * is cancelled. - * - * To cancel a currently running timer, call SDL_SetTimer(0, NULL); - * - * The timer callback function may run in a different thread than your - * main code, and so shouldn't call any functions from within itself. - * - * The maximum resolution of this timer is 10 ms, which means that if - * you request a 16 ms timer, your callback will run approximately 20 ms - * later on an unloaded system. If you wanted to set a flag signaling - * a frame update at 30 frames per second (every 33 ms), you might set a - * timer for 30 ms: - * @code SDL_SetTimer((33/10)*10, flag_update); @endcode - * - * If you use this function, you need to pass SDL_INIT_TIMER to SDL_Init(). - * - * Under UNIX, you should not use raise or use SIGALRM and this function - * in the same program, as it is implemented using setitimer(). You also - * should not use this function in multi-threaded applications as signals - * to multi-threaded apps have undefined behavior in some implementations. - * - * This function returns 0 if successful, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback); - -/** @name New timer API - * New timer API, supports multiple timers - * Written by Stephane Peter - */ -/*@{*/ - -/** - * Function prototype for the new timer callback function. - * The callback function is passed the current timer interval and returns - * the next timer interval. If the returned value is the same as the one - * passed in, the periodic alarm continues, otherwise a new alarm is - * scheduled. If the callback returns 0, the periodic alarm is cancelled. - */ -typedef Uint32 (SDLCALL *SDL_NewTimerCallback)(Uint32 interval, void *param); - -/** Definition of the timer ID type */ -typedef struct _SDL_TimerID *SDL_TimerID; - -/** Add a new timer to the pool of timers already running. - * Returns a timer ID, or NULL when an error occurs. - */ -extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param); - -/** - * Remove one of the multiple timers knowing its ID. - * Returns a boolean value indicating success. - */ -extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID t); - -/*@}*/ - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_timer_h */ diff --git a/mednafen/sdl/include/SDL_types.h b/mednafen/sdl/include/SDL_types.h deleted file mode 100644 index beed9103c7..0000000000 --- a/mednafen/sdl/include/SDL_types.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_types.h - * @deprecated Use SDL_stdinc.h instead. - */ - -/* DEPRECATED */ -#include "SDL_stdinc.h" diff --git a/mednafen/sdl/include/SDL_version.h b/mednafen/sdl/include/SDL_version.h deleted file mode 100644 index ed311d05fa..0000000000 --- a/mednafen/sdl/include/SDL_version.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_version.h - * This header defines the current SDL version - */ - -#ifndef _SDL_version_h -#define _SDL_version_h - -#include "SDL_stdinc.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @name Version Number - * Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL - */ -/*@{*/ -#define SDL_MAJOR_VERSION 1 -#define SDL_MINOR_VERSION 2 -#define SDL_PATCHLEVEL 14 -/*@}*/ - -typedef struct SDL_version { - Uint8 major; - Uint8 minor; - Uint8 patch; -} SDL_version; - -/** - * This macro can be used to fill a version structure with the compile-time - * version of the SDL library. - */ -#define SDL_VERSION(X) \ -{ \ - (X)->major = SDL_MAJOR_VERSION; \ - (X)->minor = SDL_MINOR_VERSION; \ - (X)->patch = SDL_PATCHLEVEL; \ -} - -/** This macro turns the version numbers into a numeric value: - * (1,2,3) -> (1203) - * This assumes that there will never be more than 100 patchlevels - */ -#define SDL_VERSIONNUM(X, Y, Z) \ - ((X)*1000 + (Y)*100 + (Z)) - -/** This is the version number macro for the current SDL version */ -#define SDL_COMPILEDVERSION \ - SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) - -/** This macro will evaluate to true if compiled with SDL at least X.Y.Z */ -#define SDL_VERSION_ATLEAST(X, Y, Z) \ - (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) - -/** This function gets the version of the dynamically linked SDL library. - * it should NOT be used to fill a version structure, instead you should - * use the SDL_Version() macro. - */ -extern DECLSPEC const SDL_version * SDLCALL SDL_Linked_Version(void); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_version_h */ diff --git a/mednafen/sdl/include/SDL_video.h b/mednafen/sdl/include/SDL_video.h deleted file mode 100644 index bbda571daa..0000000000 --- a/mednafen/sdl/include/SDL_video.h +++ /dev/null @@ -1,951 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** @file SDL_video.h - * Header file for access to the SDL raw framebuffer window - */ - -#ifndef _SDL_video_h -#define _SDL_video_h - -#include "SDL_stdinc.h" -#include "SDL_error.h" -#include "SDL_rwops.h" - -#include "begin_code.h" -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** @name Transparency definitions - * These define alpha as the opacity of a surface - */ -/*@{*/ -#define SDL_ALPHA_OPAQUE 255 -#define SDL_ALPHA_TRANSPARENT 0 -/*@}*/ - -/** @name Useful data types */ -/*@{*/ -typedef struct SDL_Rect { - Sint16 x, y; - Uint16 w, h; -} SDL_Rect; - -typedef struct SDL_Color { - Uint8 r; - Uint8 g; - Uint8 b; - Uint8 unused; -} SDL_Color; -#define SDL_Colour SDL_Color - -typedef struct SDL_Palette { - int ncolors; - SDL_Color *colors; -} SDL_Palette; -/*@}*/ - -/** Everything in the pixel format structure is read-only */ -typedef struct SDL_PixelFormat { - SDL_Palette *palette; - Uint8 BitsPerPixel; - Uint8 BytesPerPixel; - Uint8 Rloss; - Uint8 Gloss; - Uint8 Bloss; - Uint8 Aloss; - Uint8 Rshift; - Uint8 Gshift; - Uint8 Bshift; - Uint8 Ashift; - Uint32 Rmask; - Uint32 Gmask; - Uint32 Bmask; - Uint32 Amask; - - /** RGB color key information */ - Uint32 colorkey; - /** Alpha value information (per-surface alpha) */ - Uint8 alpha; -} SDL_PixelFormat; - -/** This structure should be treated as read-only, except for 'pixels', - * which, if not NULL, contains the raw pixel data for the surface. - */ -typedef struct SDL_Surface { - Uint32 flags; /**< Read-only */ - SDL_PixelFormat *format; /**< Read-only */ - int w, h; /**< Read-only */ - Uint16 pitch; /**< Read-only */ - void *pixels; /**< Read-write */ - int offset; /**< Private */ - - /** Hardware-specific surface info */ - struct private_hwdata *hwdata; - - /** clipping information */ - SDL_Rect clip_rect; /**< Read-only */ - Uint32 unused1; /**< for binary compatibility */ - - /** Allow recursive locks */ - Uint32 locked; /**< Private */ - - /** info for fast blit mapping to other surfaces */ - struct SDL_BlitMap *map; /**< Private */ - - /** format version, bumped at every change to invalidate blit maps */ - unsigned int format_version; /**< Private */ - - /** Reference count -- used when freeing surface */ - int refcount; /**< Read-mostly */ -} SDL_Surface; - -/** @name SDL_Surface Flags - * These are the currently supported flags for the SDL_surface - */ -/*@{*/ - -/** Available for SDL_CreateRGBSurface() or SDL_SetVideoMode() */ -/*@{*/ -#define SDL_SWSURFACE 0x00000000 /**< Surface is in system memory */ -#define SDL_HWSURFACE 0x00000001 /**< Surface is in video memory */ -#define SDL_ASYNCBLIT 0x00000004 /**< Use asynchronous blits if possible */ -/*@}*/ - -/** Available for SDL_SetVideoMode() */ -/*@{*/ -#define SDL_ANYFORMAT 0x10000000 /**< Allow any video depth/pixel-format */ -#define SDL_HWPALETTE 0x20000000 /**< Surface has exclusive palette */ -#define SDL_DOUBLEBUF 0x40000000 /**< Set up double-buffered video mode */ -#define SDL_FULLSCREEN 0x80000000 /**< Surface is a full screen display */ -#define SDL_OPENGL 0x00000002 /**< Create an OpenGL rendering context */ -#define SDL_OPENGLBLIT 0x0000000A /**< Create an OpenGL rendering context and use it for blitting */ -#define SDL_RESIZABLE 0x00000010 /**< This video mode may be resized */ -#define SDL_NOFRAME 0x00000020 /**< No window caption or edge frame */ -/*@}*/ - -/** Used internally (read-only) */ -/*@{*/ -#define SDL_HWACCEL 0x00000100 /**< Blit uses hardware acceleration */ -#define SDL_SRCCOLORKEY 0x00001000 /**< Blit uses a source color key */ -#define SDL_RLEACCELOK 0x00002000 /**< Private flag */ -#define SDL_RLEACCEL 0x00004000 /**< Surface is RLE encoded */ -#define SDL_SRCALPHA 0x00010000 /**< Blit uses source alpha blending */ -#define SDL_PREALLOC 0x01000000 /**< Surface uses preallocated memory */ -/*@}*/ - -/*@}*/ - -/** Evaluates to true if the surface needs to be locked before access */ -#define SDL_MUSTLOCK(surface) \ - (surface->offset || \ - ((surface->flags & (SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_RLEACCEL)) != 0)) - -/** typedef for private surface blitting functions */ -typedef int (*SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, - struct SDL_Surface *dst, SDL_Rect *dstrect); - - -/** Useful for determining the video hardware capabilities */ -typedef struct SDL_VideoInfo { - Uint32 hw_available :1; /**< Flag: Can you create hardware surfaces? */ - Uint32 wm_available :1; /**< Flag: Can you talk to a window manager? */ - Uint32 UnusedBits1 :6; - Uint32 UnusedBits2 :1; - Uint32 blit_hw :1; /**< Flag: Accelerated blits HW --> HW */ - Uint32 blit_hw_CC :1; /**< Flag: Accelerated blits with Colorkey */ - Uint32 blit_hw_A :1; /**< Flag: Accelerated blits with Alpha */ - Uint32 blit_sw :1; /**< Flag: Accelerated blits SW --> HW */ - Uint32 blit_sw_CC :1; /**< Flag: Accelerated blits with Colorkey */ - Uint32 blit_sw_A :1; /**< Flag: Accelerated blits with Alpha */ - Uint32 blit_fill :1; /**< Flag: Accelerated color fill */ - Uint32 UnusedBits3 :16; - Uint32 video_mem; /**< The total amount of video memory (in K) */ - SDL_PixelFormat *vfmt; /**< Value: The format of the video surface */ - int current_w; /**< Value: The current video mode width */ - int current_h; /**< Value: The current video mode height */ -} SDL_VideoInfo; - - -/** @name Overlay Formats - * The most common video overlay formats. - * For an explanation of these pixel formats, see: - * http://www.webartz.com/fourcc/indexyuv.htm - * - * For information on the relationship between color spaces, see: - * http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html - */ -/*@{*/ -#define SDL_YV12_OVERLAY 0x32315659 /**< Planar mode: Y + V + U (3 planes) */ -#define SDL_IYUV_OVERLAY 0x56555949 /**< Planar mode: Y + U + V (3 planes) */ -#define SDL_YUY2_OVERLAY 0x32595559 /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ -#define SDL_UYVY_OVERLAY 0x59565955 /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ -#define SDL_YVYU_OVERLAY 0x55595659 /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ -/*@}*/ - -/** The YUV hardware video overlay */ -typedef struct SDL_Overlay { - Uint32 format; /**< Read-only */ - int w, h; /**< Read-only */ - int planes; /**< Read-only */ - Uint16 *pitches; /**< Read-only */ - Uint8 **pixels; /**< Read-write */ - - /** @name Hardware-specific surface info */ - /*@{*/ - struct private_yuvhwfuncs *hwfuncs; - struct private_yuvhwdata *hwdata; - /*@{*/ - - /** @name Special flags */ - /*@{*/ - Uint32 hw_overlay :1; /**< Flag: This overlay hardware accelerated? */ - Uint32 UnusedBits :31; - /*@}*/ -} SDL_Overlay; - - -/** Public enumeration for setting the OpenGL window attributes. */ -typedef enum { - SDL_GL_RED_SIZE, - SDL_GL_GREEN_SIZE, - SDL_GL_BLUE_SIZE, - SDL_GL_ALPHA_SIZE, - SDL_GL_BUFFER_SIZE, - SDL_GL_DOUBLEBUFFER, - SDL_GL_DEPTH_SIZE, - SDL_GL_STENCIL_SIZE, - SDL_GL_ACCUM_RED_SIZE, - SDL_GL_ACCUM_GREEN_SIZE, - SDL_GL_ACCUM_BLUE_SIZE, - SDL_GL_ACCUM_ALPHA_SIZE, - SDL_GL_STEREO, - SDL_GL_MULTISAMPLEBUFFERS, - SDL_GL_MULTISAMPLESAMPLES, - SDL_GL_ACCELERATED_VISUAL, - SDL_GL_SWAP_CONTROL -} SDL_GLattr; - -/** @name flags for SDL_SetPalette() */ -/*@{*/ -#define SDL_LOGPAL 0x01 -#define SDL_PHYSPAL 0x02 -/*@}*/ - -/* Function prototypes */ - -/** - * @name Video Init and Quit - * These functions are used internally, and should not be used unless you - * have a specific need to specify the video driver you want to use. - * You should normally use SDL_Init() or SDL_InitSubSystem(). - */ -/*@{*/ -/** - * Initializes the video subsystem. Sets up a connection - * to the window manager, etc, and determines the current video mode and - * pixel format, but does not initialize a window or graphics mode. - * Note that event handling is activated by this routine. - * - * If you use both sound and video in your application, you need to call - * SDL_Init() before opening the sound device, otherwise under Win32 DirectX, - * you won't be able to set full-screen display modes. - */ -extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name, Uint32 flags); -extern DECLSPEC void SDLCALL SDL_VideoQuit(void); -/*@}*/ - -/** - * This function fills the given character buffer with the name of the - * video driver, and returns a pointer to it if the video driver has - * been initialized. It returns NULL if no driver has been initialized. - */ -extern DECLSPEC char * SDLCALL SDL_VideoDriverName(char *namebuf, int maxlen); - -/** - * This function returns a pointer to the current display surface. - * If SDL is doing format conversion on the display surface, this - * function returns the publicly visible surface, not the real video - * surface. - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_GetVideoSurface(void); - -/** - * This function returns a read-only pointer to information about the - * video hardware. If this is called before SDL_SetVideoMode(), the 'vfmt' - * member of the returned structure will contain the pixel format of the - * "best" video mode. - */ -extern DECLSPEC const SDL_VideoInfo * SDLCALL SDL_GetVideoInfo(void); - -/** - * Check to see if a particular video mode is supported. - * It returns 0 if the requested mode is not supported under any bit depth, - * or returns the bits-per-pixel of the closest available mode with the - * given width and height. If this bits-per-pixel is different from the - * one used when setting the video mode, SDL_SetVideoMode() will succeed, - * but will emulate the requested bits-per-pixel with a shadow surface. - * - * The arguments to SDL_VideoModeOK() are the same ones you would pass to - * SDL_SetVideoMode() - */ -extern DECLSPEC int SDLCALL SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags); - -/** - * Return a pointer to an array of available screen dimensions for the - * given format and video flags, sorted largest to smallest. Returns - * NULL if there are no dimensions available for a particular format, - * or (SDL_Rect **)-1 if any dimension is okay for the given format. - * - * If 'format' is NULL, the mode list will be for the format given - * by SDL_GetVideoInfo()->vfmt - */ -extern DECLSPEC SDL_Rect ** SDLCALL SDL_ListModes(SDL_PixelFormat *format, Uint32 flags); - -/** - * Set up a video mode with the specified width, height and bits-per-pixel. - * - * If 'bpp' is 0, it is treated as the current display bits per pixel. - * - * If SDL_ANYFORMAT is set in 'flags', the SDL library will try to set the - * requested bits-per-pixel, but will return whatever video pixel format is - * available. The default is to emulate the requested pixel format if it - * is not natively available. - * - * If SDL_HWSURFACE is set in 'flags', the video surface will be placed in - * video memory, if possible, and you may have to call SDL_LockSurface() - * in order to access the raw framebuffer. Otherwise, the video surface - * will be created in system memory. - * - * If SDL_ASYNCBLIT is set in 'flags', SDL will try to perform rectangle - * updates asynchronously, but you must always lock before accessing pixels. - * SDL will wait for updates to complete before returning from the lock. - * - * If SDL_HWPALETTE is set in 'flags', the SDL library will guarantee - * that the colors set by SDL_SetColors() will be the colors you get. - * Otherwise, in 8-bit mode, SDL_SetColors() may not be able to set all - * of the colors exactly the way they are requested, and you should look - * at the video surface structure to determine the actual palette. - * If SDL cannot guarantee that the colors you request can be set, - * i.e. if the colormap is shared, then the video surface may be created - * under emulation in system memory, overriding the SDL_HWSURFACE flag. - * - * If SDL_FULLSCREEN is set in 'flags', the SDL library will try to set - * a fullscreen video mode. The default is to create a windowed mode - * if the current graphics system has a window manager. - * If the SDL library is able to set a fullscreen video mode, this flag - * will be set in the surface that is returned. - * - * If SDL_DOUBLEBUF is set in 'flags', the SDL library will try to set up - * two surfaces in video memory and swap between them when you call - * SDL_Flip(). This is usually slower than the normal single-buffering - * scheme, but prevents "tearing" artifacts caused by modifying video - * memory while the monitor is refreshing. It should only be used by - * applications that redraw the entire screen on every update. - * - * If SDL_RESIZABLE is set in 'flags', the SDL library will allow the - * window manager, if any, to resize the window at runtime. When this - * occurs, SDL will send a SDL_VIDEORESIZE event to you application, - * and you must respond to the event by re-calling SDL_SetVideoMode() - * with the requested size (or another size that suits the application). - * - * If SDL_NOFRAME is set in 'flags', the SDL library will create a window - * without any title bar or frame decoration. Fullscreen video modes have - * this flag set automatically. - * - * This function returns the video framebuffer surface, or NULL if it fails. - * - * If you rely on functionality provided by certain video flags, check the - * flags of the returned surface to make sure that functionality is available. - * SDL will fall back to reduced functionality if the exact flags you wanted - * are not available. - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_SetVideoMode - (int width, int height, int bpp, Uint32 flags); - -/** @name SDL_Update Functions - * These functions should not be called while 'screen' is locked. - */ -/*@{*/ -/** - * Makes sure the given list of rectangles is updated on the given screen. - */ -extern DECLSPEC void SDLCALL SDL_UpdateRects - (SDL_Surface *screen, int numrects, SDL_Rect *rects); -/** - * If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update the entire - * screen. - */ -extern DECLSPEC void SDLCALL SDL_UpdateRect - (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h); -/*@}*/ - -/** - * On hardware that supports double-buffering, this function sets up a flip - * and returns. The hardware will wait for vertical retrace, and then swap - * video buffers before the next video surface blit or lock will return. - * On hardware that doesn not support double-buffering, this is equivalent - * to calling SDL_UpdateRect(screen, 0, 0, 0, 0); - * The SDL_DOUBLEBUF flag must have been passed to SDL_SetVideoMode() when - * setting the video mode for this function to perform hardware flipping. - * This function returns 0 if successful, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_Flip(SDL_Surface *screen); - -/** - * Set the gamma correction for each of the color channels. - * The gamma values range (approximately) between 0.1 and 10.0 - * - * If this function isn't supported directly by the hardware, it will - * be emulated using gamma ramps, if available. If successful, this - * function returns 0, otherwise it returns -1. - */ -extern DECLSPEC int SDLCALL SDL_SetGamma(float red, float green, float blue); - -/** - * Set the gamma translation table for the red, green, and blue channels - * of the video hardware. Each table is an array of 256 16-bit quantities, - * representing a mapping between the input and output for that channel. - * The input is the index into the array, and the output is the 16-bit - * gamma value at that index, scaled to the output color precision. - * - * You may pass NULL for any of the channels to leave it unchanged. - * If the call succeeds, it will return 0. If the display driver or - * hardware does not support gamma translation, or otherwise fails, - * this function will return -1. - */ -extern DECLSPEC int SDLCALL SDL_SetGammaRamp(const Uint16 *red, const Uint16 *green, const Uint16 *blue); - -/** - * Retrieve the current values of the gamma translation tables. - * - * You must pass in valid pointers to arrays of 256 16-bit quantities. - * Any of the pointers may be NULL to ignore that channel. - * If the call succeeds, it will return 0. If the display driver or - * hardware does not support gamma translation, or otherwise fails, - * this function will return -1. - */ -extern DECLSPEC int SDLCALL SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue); - -/** - * Sets a portion of the colormap for the given 8-bit surface. If 'surface' - * is not a palettized surface, this function does nothing, returning 0. - * If all of the colors were set as passed to SDL_SetColors(), it will - * return 1. If not all the color entries were set exactly as given, - * it will return 0, and you should look at the surface palette to - * determine the actual color palette. - * - * When 'surface' is the surface associated with the current display, the - * display colormap will be updated with the requested colors. If - * SDL_HWPALETTE was set in SDL_SetVideoMode() flags, SDL_SetColors() - * will always return 1, and the palette is guaranteed to be set the way - * you desire, even if the window colormap has to be warped or run under - * emulation. - */ -extern DECLSPEC int SDLCALL SDL_SetColors(SDL_Surface *surface, - SDL_Color *colors, int firstcolor, int ncolors); - -/** - * Sets a portion of the colormap for a given 8-bit surface. - * 'flags' is one or both of: - * SDL_LOGPAL -- set logical palette, which controls how blits are mapped - * to/from the surface, - * SDL_PHYSPAL -- set physical palette, which controls how pixels look on - * the screen - * Only screens have physical palettes. Separate change of physical/logical - * palettes is only possible if the screen has SDL_HWPALETTE set. - * - * The return value is 1 if all colours could be set as requested, and 0 - * otherwise. - * - * SDL_SetColors() is equivalent to calling this function with - * flags = (SDL_LOGPAL|SDL_PHYSPAL). - */ -extern DECLSPEC int SDLCALL SDL_SetPalette(SDL_Surface *surface, int flags, - SDL_Color *colors, int firstcolor, - int ncolors); - -/** - * Maps an RGB triple to an opaque pixel value for a given pixel format - */ -extern DECLSPEC Uint32 SDLCALL SDL_MapRGB -(const SDL_PixelFormat * const format, - const Uint8 r, const Uint8 g, const Uint8 b); - -/** - * Maps an RGBA quadruple to a pixel value for a given pixel format - */ -extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA -(const SDL_PixelFormat * const format, - const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a); - -/** - * Maps a pixel value into the RGB components for a given pixel format - */ -extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, - const SDL_PixelFormat * const fmt, - Uint8 *r, Uint8 *g, Uint8 *b); - -/** - * Maps a pixel value into the RGBA components for a given pixel format - */ -extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, - const SDL_PixelFormat * const fmt, - Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); - -/** @sa SDL_CreateRGBSurface */ -#define SDL_AllocSurface SDL_CreateRGBSurface -/** - * Allocate and free an RGB surface (must be called after SDL_SetVideoMode) - * If the depth is 4 or 8 bits, an empty palette is allocated for the surface. - * If the depth is greater than 8 bits, the pixel format is set using the - * flags '[RGB]mask'. - * If the function runs out of memory, it will return NULL. - * - * The 'flags' tell what kind of surface to create. - * SDL_SWSURFACE means that the surface should be created in system memory. - * SDL_HWSURFACE means that the surface should be created in video memory, - * with the same format as the display surface. This is useful for surfaces - * that will not change much, to take advantage of hardware acceleration - * when being blitted to the display surface. - * SDL_ASYNCBLIT means that SDL will try to perform asynchronous blits with - * this surface, but you must always lock it before accessing the pixels. - * SDL will wait for current blits to finish before returning from the lock. - * SDL_SRCCOLORKEY indicates that the surface will be used for colorkey blits. - * If the hardware supports acceleration of colorkey blits between - * two surfaces in video memory, SDL will try to place the surface in - * video memory. If this isn't possible or if there is no hardware - * acceleration available, the surface will be placed in system memory. - * SDL_SRCALPHA means that the surface will be used for alpha blits and - * if the hardware supports hardware acceleration of alpha blits between - * two surfaces in video memory, to place the surface in video memory - * if possible, otherwise it will be placed in system memory. - * If the surface is created in video memory, blits will be _much_ faster, - * but the surface format must be identical to the video surface format, - * and the only way to access the pixels member of the surface is to use - * the SDL_LockSurface() and SDL_UnlockSurface() calls. - * If the requested surface actually resides in video memory, SDL_HWSURFACE - * will be set in the flags member of the returned surface. If for some - * reason the surface could not be placed in video memory, it will not have - * the SDL_HWSURFACE flag set, and will be created in system memory instead. - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurface - (Uint32 flags, int width, int height, int depth, - Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); -/** @sa SDL_CreateRGBSurface */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, - int width, int height, int depth, int pitch, - Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); -extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface *surface); - -/** - * SDL_LockSurface() sets up a surface for directly accessing the pixels. - * Between calls to SDL_LockSurface()/SDL_UnlockSurface(), you can write - * to and read from 'surface->pixels', using the pixel format stored in - * 'surface->format'. Once you are done accessing the surface, you should - * use SDL_UnlockSurface() to release it. - * - * Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates - * to 0, then you can read and write to the surface at any time, and the - * pixel format of the surface will not change. In particular, if the - * SDL_HWSURFACE flag is not given when calling SDL_SetVideoMode(), you - * will not need to lock the display surface before accessing it. - * - * No operating system or library calls should be made between lock/unlock - * pairs, as critical system locks may be held during this time. - * - * SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. - */ -extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface *surface); -extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface); - -/** - * Load a surface from a seekable SDL data source (memory or file.) - * If 'freesrc' is non-zero, the source will be closed after being read. - * Returns the new surface, or NULL if there was an error. - * The new surface should be freed with SDL_FreeSurface(). - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc); - -/** Convenience macro -- load a surface from a file */ -#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) - -/** - * Save a surface to a seekable SDL data source (memory or file.) - * If 'freedst' is non-zero, the source will be closed after being written. - * Returns 0 if successful or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_SaveBMP_RW - (SDL_Surface *surface, SDL_RWops *dst, int freedst); - -/** Convenience macro -- save a surface to a file */ -#define SDL_SaveBMP(surface, file) \ - SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) - -/** - * Sets the color key (transparent pixel) in a blittable surface. - * If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL), - * 'key' will be the transparent pixel in the source image of a blit. - * SDL_RLEACCEL requests RLE acceleration for the surface if present, - * and removes RLE acceleration if absent. - * If 'flag' is 0, this function clears any current color key. - * This function returns 0, or -1 if there was an error. - */ -extern DECLSPEC int SDLCALL SDL_SetColorKey - (SDL_Surface *surface, Uint32 flag, Uint32 key); - -/** - * This function sets the alpha value for the entire surface, as opposed to - * using the alpha component of each pixel. This value measures the range - * of transparency of the surface, 0 being completely transparent to 255 - * being completely opaque. An 'alpha' value of 255 causes blits to be - * opaque, the source pixels copied to the destination (the default). Note - * that per-surface alpha can be combined with colorkey transparency. - * - * If 'flag' is 0, alpha blending is disabled for the surface. - * If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface. - * OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the - * surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed. - * - * The 'alpha' parameter is ignored for surfaces that have an alpha channel. - */ -extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha); - -/** - * Sets the clipping rectangle for the destination surface in a blit. - * - * If the clip rectangle is NULL, clipping will be disabled. - * If the clip rectangle doesn't intersect the surface, the function will - * return SDL_FALSE and blits will be completely clipped. Otherwise the - * function returns SDL_TRUE and blits to the surface will be clipped to - * the intersection of the surface area and the clipping rectangle. - * - * Note that blits are automatically clipped to the edges of the source - * and destination surfaces. - */ -extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect); - -/** - * Gets the clipping rectangle for the destination surface in a blit. - * 'rect' must be a pointer to a valid rectangle which will be filled - * with the correct values. - */ -extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect); - -/** - * Creates a new surface of the specified format, and then copies and maps - * the given surface to it so the blit of the converted surface will be as - * fast as possible. If this function fails, it returns NULL. - * - * The 'flags' parameter is passed to SDL_CreateRGBSurface() and has those - * semantics. You can also pass SDL_RLEACCEL in the flags parameter and - * SDL will try to RLE accelerate colorkey and alpha blits in the resulting - * surface. - * - * This function is used internally by SDL_DisplayFormat(). - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurface - (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags); - -/** - * This performs a fast blit from the source surface to the destination - * surface. It assumes that the source and destination rectangles are - * the same size. If either 'srcrect' or 'dstrect' are NULL, the entire - * surface (src or dst) is copied. The final blit rectangles are saved - * in 'srcrect' and 'dstrect' after all clipping is performed. - * If the blit is successful, it returns 0, otherwise it returns -1. - * - * The blit function should not be called on a locked surface. - * - * The blit semantics for surfaces with and without alpha and colorkey - * are defined as follows: - * - * RGBA->RGB: - * SDL_SRCALPHA set: - * alpha-blend (using alpha-channel). - * SDL_SRCCOLORKEY ignored. - * SDL_SRCALPHA not set: - * copy RGB. - * if SDL_SRCCOLORKEY set, only copy the pixels matching the - * RGB values of the source colour key, ignoring alpha in the - * comparison. - * - * RGB->RGBA: - * SDL_SRCALPHA set: - * alpha-blend (using the source per-surface alpha value); - * set destination alpha to opaque. - * SDL_SRCALPHA not set: - * copy RGB, set destination alpha to source per-surface alpha value. - * both: - * if SDL_SRCCOLORKEY set, only copy the pixels matching the - * source colour key. - * - * RGBA->RGBA: - * SDL_SRCALPHA set: - * alpha-blend (using the source alpha channel) the RGB values; - * leave destination alpha untouched. [Note: is this correct?] - * SDL_SRCCOLORKEY ignored. - * SDL_SRCALPHA not set: - * copy all of RGBA to the destination. - * if SDL_SRCCOLORKEY set, only copy the pixels matching the - * RGB values of the source colour key, ignoring alpha in the - * comparison. - * - * RGB->RGB: - * SDL_SRCALPHA set: - * alpha-blend (using the source per-surface alpha value). - * SDL_SRCALPHA not set: - * copy RGB. - * both: - * if SDL_SRCCOLORKEY set, only copy the pixels matching the - * source colour key. - * - * If either of the surfaces were in video memory, and the blit returns -2, - * the video memory was lost, so it should be reloaded with artwork and - * re-blitted: - * @code - * while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) { - * while ( SDL_LockSurface(image) < 0 ) - * Sleep(10); - * -- Write image pixels to image->pixels -- - * SDL_UnlockSurface(image); - * } - * @endcode - * - * This happens under DirectX 5.0 when the system switches away from your - * fullscreen application. The lock will also fail until you have access - * to the video memory again. - * - * You should call SDL_BlitSurface() unless you know exactly how SDL - * blitting works internally and how to use the other blit functions. - */ -#define SDL_BlitSurface SDL_UpperBlit - -/** This is the public blit function, SDL_BlitSurface(), and it performs - * rectangle validation and clipping before passing it to SDL_LowerBlit() - */ -extern DECLSPEC int SDLCALL SDL_UpperBlit - (SDL_Surface *src, SDL_Rect *srcrect, - SDL_Surface *dst, SDL_Rect *dstrect); -/** This is a semi-private blit function and it performs low-level surface - * blitting only. - */ -extern DECLSPEC int SDLCALL SDL_LowerBlit - (SDL_Surface *src, SDL_Rect *srcrect, - SDL_Surface *dst, SDL_Rect *dstrect); - -/** - * This function performs a fast fill of the given rectangle with 'color' - * The given rectangle is clipped to the destination surface clip area - * and the final fill rectangle is saved in the passed in pointer. - * If 'dstrect' is NULL, the whole surface will be filled with 'color' - * The color should be a pixel of the format used by the surface, and - * can be generated by the SDL_MapRGB() function. - * This function returns 0 on success, or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_FillRect - (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); - -/** - * This function takes a surface and copies it to a new surface of the - * pixel format and colors of the video framebuffer, suitable for fast - * blitting onto the display surface. It calls SDL_ConvertSurface() - * - * If you want to take advantage of hardware colorkey or alpha blit - * acceleration, you should set the colorkey and alpha value before - * calling this function. - * - * If the conversion fails or runs out of memory, it returns NULL - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormat(SDL_Surface *surface); - -/** - * This function takes a surface and copies it to a new surface of the - * pixel format and colors of the video framebuffer (if possible), - * suitable for fast alpha blitting onto the display surface. - * The new surface will always have an alpha channel. - * - * If you want to take advantage of hardware colorkey or alpha blit - * acceleration, you should set the colorkey and alpha value before - * calling this function. - * - * If the conversion fails or runs out of memory, it returns NULL - */ -extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormatAlpha(SDL_Surface *surface); - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name YUV video surface overlay functions */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** This function creates a video output overlay - * Calling the returned surface an overlay is something of a misnomer because - * the contents of the display surface underneath the area where the overlay - * is shown is undefined - it may be overwritten with the converted YUV data. - */ -extern DECLSPEC SDL_Overlay * SDLCALL SDL_CreateYUVOverlay(int width, int height, - Uint32 format, SDL_Surface *display); - -/** Lock an overlay for direct access, and unlock it when you are done */ -extern DECLSPEC int SDLCALL SDL_LockYUVOverlay(SDL_Overlay *overlay); -extern DECLSPEC void SDLCALL SDL_UnlockYUVOverlay(SDL_Overlay *overlay); - -/** Blit a video overlay to the display surface. - * The contents of the video surface underneath the blit destination are - * not defined. - * The width and height of the destination rectangle may be different from - * that of the overlay, but currently only 2x scaling is supported. - */ -extern DECLSPEC int SDLCALL SDL_DisplayYUVOverlay(SDL_Overlay *overlay, SDL_Rect *dstrect); - -/** Free a video overlay */ -extern DECLSPEC void SDLCALL SDL_FreeYUVOverlay(SDL_Overlay *overlay); - -/*@}*/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name OpenGL support functions. */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Dynamically load an OpenGL library, or the default one if path is NULL - * - * If you do this, you need to retrieve all of the GL functions used in - * your program from the dynamic library using SDL_GL_GetProcAddress(). - */ -extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); - -/** - * Get the address of a GL function - */ -extern DECLSPEC void * SDLCALL SDL_GL_GetProcAddress(const char* proc); - -/** - * Set an attribute of the OpenGL subsystem before intialization. - */ -extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); - -/** - * Get an attribute of the OpenGL subsystem from the windowing - * interface, such as glX. This is of course different from getting - * the values from SDL's internal OpenGL subsystem, which only - * stores the values you request before initialization. - * - * Developers should track the values they pass into SDL_GL_SetAttribute - * themselves if they want to retrieve these values. - */ -extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int* value); - -/** - * Swap the OpenGL buffers, if double-buffering is supported. - */ -extern DECLSPEC void SDLCALL SDL_GL_SwapBuffers(void); - -/** @name OpenGL Internal Functions - * Internal functions that should not be called unless you have read - * and understood the source code for these functions. - */ -/*@{*/ -extern DECLSPEC void SDLCALL SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); -extern DECLSPEC void SDLCALL SDL_GL_Lock(void); -extern DECLSPEC void SDLCALL SDL_GL_Unlock(void); -/*@}*/ - -/*@}*/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** @name Window Manager Functions */ -/** These functions allow interaction with the window manager, if any. */ /*@{*/ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Sets the title and icon text of the display window (UTF-8 encoded) - */ -extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title, const char *icon); -/** - * Gets the title and icon text of the display window (UTF-8 encoded) - */ -extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon); - -/** - * Sets the icon for the display window. - * This function must be called before the first call to SDL_SetVideoMode(). - * It takes an icon surface, and a mask in MSB format. - * If 'mask' is NULL, the entire icon surface will be used as the icon. - */ -extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface *icon, Uint8 *mask); - -/** - * This function iconifies the window, and returns 1 if it succeeded. - * If the function succeeds, it generates an SDL_APPACTIVE loss event. - * This function is a noop and returns 0 in non-windowed environments. - */ -extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void); - -/** - * Toggle fullscreen mode without changing the contents of the screen. - * If the display surface does not require locking before accessing - * the pixel information, then the memory pointers will not change. - * - * If this function was able to toggle fullscreen mode (change from - * running in a window to fullscreen, or vice-versa), it will return 1. - * If it is not implemented, or fails, it returns 0. - * - * The next call to SDL_SetVideoMode() will set the mode fullscreen - * attribute based on the flags parameter - if SDL_FULLSCREEN is not - * set, then the display will be windowed by default where supported. - * - * This is currently only implemented in the X11 video driver. - */ -extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface *surface); - -typedef enum { - SDL_GRAB_QUERY = -1, - SDL_GRAB_OFF = 0, - SDL_GRAB_ON = 1, - SDL_GRAB_FULLSCREEN /**< Used internally */ -} SDL_GrabMode; -/** - * This function allows you to set and query the input grab state of - * the application. It returns the new input grab state. - * - * Grabbing means that the mouse is confined to the application window, - * and nearly all keyboard input is passed directly to the application, - * and not interpreted by a window manager, if any. - */ -extern DECLSPEC SDL_GrabMode SDLCALL SDL_WM_GrabInput(SDL_GrabMode mode); - -/*@}*/ - -/** @internal Not in public API at the moment - do not use! */ -extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect, - SDL_Surface *dst, SDL_Rect *dstrect); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include "close_code.h" - -#endif /* _SDL_video_h */ diff --git a/mednafen/sdl/include/begin_code.h b/mednafen/sdl/include/begin_code.h deleted file mode 100644 index 5355a4d191..0000000000 --- a/mednafen/sdl/include/begin_code.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/** - * @file begin_code.h - * This file sets things up for C dynamic library function definitions, - * static inlined functions, and structures aligned at 4-byte alignment. - * If you don't like ugly C preprocessor code, don't look at this file. :) - */ - -/** - * @file begin_code.h - * This shouldn't be nested -- included it around code only. - */ -#ifdef _begin_code_h -#error Nested inclusion of begin_code.h -#endif -#define _begin_code_h - -/** - * @def DECLSPEC - * Some compilers use a special export keyword - */ -#ifndef DECLSPEC -# if defined(__BEOS__) || defined(__HAIKU__) -# if defined(__GNUC__) -# define DECLSPEC __declspec(dllexport) -# else -# define DECLSPEC __declspec(export) -# endif -# elif defined(__WIN32__) -# ifdef __BORLANDC__ -# ifdef BUILD_SDL -# define DECLSPEC -# else -# define DECLSPEC __declspec(dllimport) -# endif -# else -# define DECLSPEC __declspec(dllexport) -# endif -# elif defined(__OS2__) -# ifdef __WATCOMC__ -# ifdef BUILD_SDL -# define DECLSPEC __declspec(dllexport) -# else -# define DECLSPEC -# endif -# elif defined (__GNUC__) && __GNUC__ < 4 -# /* Added support for GCC-EMX = 4 -# define DECLSPEC __attribute__ ((visibility("default"))) -# else -# define DECLSPEC -# endif -# endif -#endif - -/** - * @def SDLCALL - * By default SDL uses the C calling convention - */ -#ifndef SDLCALL -# if defined(__WIN32__) && !defined(__GNUC__) -# define SDLCALL __cdecl -# elif defined(__OS2__) -# if defined (__GNUC__) && __GNUC__ < 4 -# /* Added support for GCC-EMX

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 z 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 +#ifdef _MSC_VER +#define S_IRUSR _S_IREAD +#define S_IWUSR _S_IWRITE +#endif + //TODO - change FOP crap to separate functions. this was just less work at the time. FILE* headless_fopen(const char* path, const char* mode); int headless_fclose(FILE* fp); @@ -127,8 +132,7 @@ FileWrapper::FileWrapper(const char *path, const int mode, const char *purpose) #if defined(S_IRGRP) && defined(S_IROTH) int tmpfd = open(path, open_flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); #else - //int tmpfd = open(path, open_flags, S_IRUSR | S_IWUSR); - int tmpfd = open(path, open_flags, _S_IREAD | _S_IWRITE); //zero 07-feb-2011 + int tmpfd = open(path, open_flags, S_IRUSR | S_IWUSR); #endif if(tmpfd == -1) { diff --git a/mednafen/src/PACKED.h b/mednafen/src/PACKED.h new file mode 100644 index 0000000000..eaef0c7a40 --- /dev/null +++ b/mednafen/src/PACKED.h @@ -0,0 +1,12 @@ +#ifndef __GNUC__ +#pragma pack(push, 1) +#pragma warning(disable : 4103) +#endif + +#ifndef __PACKED + #ifdef __GNUC__ + #define __PACKED __attribute__((__packed__)) + #else + #define __PACKED + #endif +#endif diff --git a/mednafen/src/PACKED_END.h b/mednafen/src/PACKED_END.h new file mode 100644 index 0000000000..6eb7bd7c15 --- /dev/null +++ b/mednafen/src/PACKED_END.h @@ -0,0 +1,3 @@ +#ifndef __GNUC__ +#pragma pack(pop) +#endif diff --git a/mednafen/src/cdrom/cdromif.cpp b/mednafen/src/cdrom/cdromif.cpp index 42f3cad6d8..439362f935 100644 --- a/mednafen/src/cdrom/cdromif.cpp +++ b/mednafen/src/cdrom/cdromif.cpp @@ -65,6 +65,7 @@ CDIF_Message::~CDIF_Message() } +#ifdef WANT_CDIF_MT CDIF_Queue::CDIF_Queue() { ze_mutex = MDFND_CreateMutex(); @@ -116,7 +117,6 @@ void CDIF_Queue::Write(const CDIF_Message &message) MDFND_UnlockMutex(ze_mutex); } - void CDIF_MT::RT_EjectDisc(bool eject_status, bool skip_actual_eject) { int32 old_de = DiscEjected; @@ -359,19 +359,6 @@ CDIF_MT::~CDIF_MT() } } -bool CDIF::ValidateRawSector(uint8 *buf) -{ - int mode = buf[12 + 3]; - - if(mode != 0x1 && mode != 0x2) - return(false); - - if(!edc_lec_check_correct(buf, mode == 2)) - return(false); - - return(true); -} - bool CDIF_MT::ReadRawSector(uint8 *buf, uint32 lba) { bool found = FALSE; @@ -424,6 +411,43 @@ void CDIF_MT::HintReadSector(uint32 lba) ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_READ_SECTOR, lba)); } +bool CDIF_MT::Eject(bool eject_status) +{ + if(UnrecoverableError) + return(false); + + try + { + CDIF_Message msg; + + ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_EJECT, eject_status)); + EmuThreadQueue.Read(&msg); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Error on eject/insert attempt: %s"), e.what()); + return(false); + } + + return(true); +} + +#endif //WANT_CDIF_MT + +bool CDIF::ValidateRawSector(uint8 *buf) +{ + int mode = buf[12 + 3]; + + if(mode != 0x1 && mode != 0x2) + return(false); + + if(!edc_lec_check_correct(buf, mode == 2)) + return(false); + + return(true); +} + + int CDIF::ReadSector(uint8* pBuf, uint32 lba, uint32 nSectors) { int ret = 0; @@ -474,34 +498,13 @@ int CDIF::ReadSector(uint8* pBuf, uint32 lba, uint32 nSectors) return(ret); } -bool CDIF_MT::Eject(bool eject_status) -{ - if(UnrecoverableError) - return(false); - - try - { - CDIF_Message msg; - - ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_EJECT, eject_status)); - EmuThreadQueue.Read(&msg); - } - catch(std::exception &e) - { - MDFN_PrintError(_("Error on eject/insert attempt: %s"), e.what()); - return(false); - } - - return(true); -} - // // // Single-threaded implementation follows. // // -CDIF_ST::CDIF_ST(const char *device_name, bool di_memcache) +CDIF_ST::CDIF_ST(const char *device_name) { puts("***WARNING USING SINGLE-THREADED CD READER***"); diff --git a/mednafen/src/cdrom/cdromif.h b/mednafen/src/cdrom/cdromif.h index 107a51cda9..509806d0c6 100644 --- a/mednafen/src/cdrom/cdromif.h +++ b/mednafen/src/cdrom/cdromif.h @@ -126,6 +126,8 @@ typedef struct uint8 data[2352 + 96]; } CDIF_Sector_Buffer; +#ifdef WANT_CDIF_MT + // TODO: prohibit copy constructor class CDIF_MT : public CDIF { @@ -172,6 +174,7 @@ class CDIF_MT : public CDIF int ra_count; uint32 last_read_lba; }; +#endif //WANT_CDIF_MT // TODO: prohibit copy constructor @@ -179,7 +182,7 @@ class CDIF_ST : public CDIF { public: - CDIF_ST(const char *device_name, bool di_memcache); + CDIF_ST(const char *device_name); virtual ~CDIF_ST(); virtual void HintReadSector(uint32 lba); diff --git a/mednafen/src/drivers/console.cpp b/mednafen/src/drivers/console.cpp index 28d88f1d21..ac8bfa2145 100644 --- a/mednafen/src/drivers/console.cpp +++ b/mednafen/src/drivers/console.cpp @@ -148,6 +148,7 @@ int MDFNConsole::Event(const SDL_Event *event) void MDFNConsole::Draw(MDFN_Surface *surface, const MDFN_Rect *src_rect) { +#ifdef WANT_SOFTGUI const MDFN_PixelFormat pf_cache = surface->format; uint32 pitch32 = surface->pitchinpix; uint32 w = src_rect->w; @@ -288,6 +289,7 @@ void MDFNConsole::Draw(MDFN_Surface *surface, const MDFN_Rect *src_rect) MDFN_StretchBlitSurface(tmp_surface, &tmp_rect, surface, &dest_rect); delete tmp_surface; } +#endif //WANT_SOFTGUI } void MDFNConsole::WriteLine(UTF8 *text) diff --git a/mednafen/src/drivers/debugger.cpp b/mednafen/src/drivers/debugger.cpp index 9f0003469b..d92c190485 100644 --- a/mednafen/src/drivers/debugger.cpp +++ b/mednafen/src/drivers/debugger.cpp @@ -634,6 +634,7 @@ struct DisasmEntry static DebuggerPrompt *myprompt = NULL; +#ifndef HEADLESS // Call this function from the main thread void Debugger_Draw(MDFN_Surface *surface, MDFN_Rect *rect, const MDFN_Rect *screen_rect) { @@ -650,8 +651,7 @@ void Debugger_Draw(MDFN_Surface *surface, MDFN_Rect *rect, const MDFN_Rect *scre { surface->Fill(0, 0, 0, DebuggerOpacity); - //zero 29-oct-2012 - memdebugger not supported - //MemDebugger_Draw(surface, rect, screen_rect); + MemDebugger_Draw(surface, rect, screen_rect); return; } else if(WhichMode == 3) @@ -1055,7 +1055,7 @@ void Debugger_Draw(MDFN_Surface *surface, MDFN_Rect *rect, const MDFN_Rect *scre } LockGameMutex(0); } - +#endif //HEADLESS static const char HexLUT[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; // Function called from game thread @@ -1164,6 +1164,7 @@ bool Debugger_IsActive(unsigned int *w, unsigned int *h) } +#ifndef HEADLESS // Call this function from the game thread: bool Debugger_Toggle(void) { @@ -1325,6 +1326,7 @@ bool Debugger_Toggle(void) } return(IsActive); } +#endif //HEADLESS void Debugger_ModOpacity(int deltalove) { @@ -1333,6 +1335,7 @@ void Debugger_ModOpacity(int deltalove) if(DebuggerOpacity > 0xFF) DebuggerOpacity = 0xFF; } +#ifndef HEADLESS // Called from the main thread void Debugger_Event(const SDL_Event *event) { @@ -1688,4 +1691,5 @@ void Debugger_Event(const SDL_Event *event) break; } } +#endif //HEADLESS diff --git a/mednafen/src/drivers/debugger.h b/mednafen/src/drivers/debugger.h index e8f9e9a202..a75ce18970 100644 --- a/mednafen/src/drivers/debugger.h +++ b/mednafen/src/drivers/debugger.h @@ -8,10 +8,13 @@ void Debugger_ModOpacity(int deltalove); void Debugger_ForceStepIfStepping(); // For synchronizations with save state loading and reset/power toggles. Should be called from game thread only. bool Debugger_IsActive(unsigned int *w = NULL, unsigned int *h = NULL); -void Debugger_Event(const SDL_Event *event); bool Debugger_Toggle(void); void Debugger_ForceSteppingMode(void); +#ifndef HEADLESS +void Debugger_Event(const SDL_Event *event); +#endif + extern volatile bool InSteppingMode; #else diff --git a/mednafen/src/drivers/gfxdebugger.cpp b/mednafen/src/drivers/gfxdebugger.cpp index 9deede6167..852e6ce24d 100644 --- a/mednafen/src/drivers/gfxdebugger.cpp +++ b/mednafen/src/drivers/gfxdebugger.cpp @@ -80,6 +80,7 @@ void GfxDebugger_SetActive(bool newia) // Call this function from the main thread void GfxDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect) { +#ifdef WANT_SOFTGUI if(!IsActive) return; @@ -171,9 +172,11 @@ void GfxDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_R } LockGameMutex(0); +#endif //WANT_SOFTGUI } // Call this from the main thread +#ifndef HEADLESS int GfxDebugger_Event(const SDL_Event *event) { switch(event->type) @@ -260,4 +263,4 @@ int GfxDebugger_Event(const SDL_Event *event) } return(1); } - +#endif //HEADLESS diff --git a/mednafen/src/drivers/gfxdebugger.h b/mednafen/src/drivers/gfxdebugger.h index 554b07d559..e64f70ea60 100644 --- a/mednafen/src/drivers/gfxdebugger.h +++ b/mednafen/src/drivers/gfxdebugger.h @@ -2,7 +2,9 @@ #define __MDFN_DRIVERS_GFXDEBUGGER_H void GfxDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); -int GfxDebugger_Event(const SDL_Event *event); void GfxDebugger_SetActive(bool newia); +#ifndef HEADLESS +int GfxDebugger_Event(const SDL_Event *event); +#endif #endif diff --git a/mednafen/src/drivers/input.h b/mednafen/src/drivers/input.h index 5616d6cf4b..4ac1dbb400 100644 --- a/mednafen/src/drivers/input.h +++ b/mednafen/src/drivers/input.h @@ -16,8 +16,10 @@ typedef struct { #define MKK(k) SDLK_##k #define MKK_COUNT (SDLK_LAST+1) +#ifndef HEADLESS void Input_Event(const SDL_Event *event); void MainSetEventHook(int (*eh)(const SDL_Event *event)); // TODO: factor out eventually. +#endif // Called after a game is loaded. void InitGameInput(MDFNGI *GI); diff --git a/mednafen/src/drivers/logdebugger.cpp b/mednafen/src/drivers/logdebugger.cpp index 5547b5fa65..cc07dc6ea7 100644 --- a/mednafen/src/drivers/logdebugger.cpp +++ b/mednafen/src/drivers/logdebugger.cpp @@ -212,6 +212,7 @@ static void LogGroupSelect(int delta) } +#ifndef HEADLESS // Call this from the main thread int LogDebugger_Event(const SDL_Event *event) { @@ -284,4 +285,5 @@ int LogDebugger_Event(const SDL_Event *event) } return(1); } +#endif //HEADLESS diff --git a/mednafen/src/drivers/logdebugger.h b/mednafen/src/drivers/logdebugger.h index 28e40edb3d..5b95fa33e5 100644 --- a/mednafen/src/drivers/logdebugger.h +++ b/mednafen/src/drivers/logdebugger.h @@ -2,8 +2,10 @@ #define __MDFN_DRIVERS_LOGDEBUGGER_H void LogDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); -int LogDebugger_Event(const SDL_Event *event); void LogDebugger_SetActive(bool newia); +#ifndef HEADLESS +int LogDebugger_Event(const SDL_Event *event); +#endif #endif diff --git a/mednafen/src/drivers/main.h b/mednafen/src/drivers/main.h index d8aff263d3..3ffcd57b87 100644 --- a/mednafen/src/drivers/main.h +++ b/mednafen/src/drivers/main.h @@ -7,8 +7,10 @@ #include "config.h" #include "args.h" +#ifndef HEADLESS #include #include +#endif #include "../gettext.h" diff --git a/mednafen/src/drivers/memdebugger.h b/mednafen/src/drivers/memdebugger.h index c9f2765122..123d9f083d 100644 --- a/mednafen/src/drivers/memdebugger.h +++ b/mednafen/src/drivers/memdebugger.h @@ -2,8 +2,10 @@ #define __MDFN_DRIVERS_MEMDEBUGGER_H void MemDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); -int MemDebugger_Event(const SDL_Event *event); void MemDebugger_SetActive(bool newia); +#ifndef HEADLESS +int MemDebugger_Event(const SDL_Event *event); +#endif bool MemDebugger_Init(void); diff --git a/mednafen/src/drivers/prompt.cpp b/mednafen/src/drivers/prompt.cpp index 028fadfcba..68616a8ead 100644 --- a/mednafen/src/drivers/prompt.cpp +++ b/mednafen/src/drivers/prompt.cpp @@ -82,6 +82,7 @@ void HappyPrompt::SetKBB(const std::string &zestring) void HappyPrompt::Draw(MDFN_Surface *surface, const MDFN_Rect *rect) { +#ifdef WANT_SOFTGUI std::vector PromptAnswer; std::vector PromptAnswerOffsets; std::vector PromptAnswerWidths; @@ -149,8 +150,10 @@ void HappyPrompt::Draw(MDFN_Surface *surface, const MDFN_Rect *rect) DrawTextTrans(pixels + (13 * 2 + 2) * pitch32 + 2 * 6 + xpos, surface->pitchinpix << 2, 9, blinky_thingy, MK_COLOR_A(0x00, 0xFF, 0x00, 0xFF), 0, MDFN_FONT_6x13_12x13); } } +#endif //WANT_SOFTGUI } +#ifndef HEADLESS void HappyPrompt::Event(const SDL_Event *event) { if(event->type == SDL_KEYDOWN) @@ -207,3 +210,4 @@ void HappyPrompt::Event(const SDL_Event *event) } } } +#endif //HEADLESS diff --git a/mednafen/src/drivers/prompt.h b/mednafen/src/drivers/prompt.h index adedf1589d..25cf2849f0 100644 --- a/mednafen/src/drivers/prompt.h +++ b/mednafen/src/drivers/prompt.h @@ -10,13 +10,15 @@ class HappyPrompt virtual ~HappyPrompt(); void Draw(MDFN_Surface *surface, const MDFN_Rect *rect); - void Event(const SDL_Event *event); void Init(const std::string &ptext, const std::string &zestring); void SetText(const std::string &ptext); void SetKBB(const std::string &zestring); - virtual void TheEnd(const std::string &pstring); + virtual void TheEnd(const std::string &pstring); + #ifndef HEADLESS + void Event(const SDL_Event *event); + #endif protected: std::string PromptText; diff --git a/mednafen/src/drivers/video.h b/mednafen/src/drivers/video.h index 83273c8270..0afe1f110c 100644 --- a/mednafen/src/drivers/video.h +++ b/mednafen/src/drivers/video.h @@ -70,7 +70,7 @@ bool Video_ScreenBlitReady(void); // Called from the main thread. void Video_BlitToScreen(void); - +#ifndef HEADLESS class SDL_to_MDFN_Surface_Wrapper : public MDFN_Surface { public: @@ -123,5 +123,6 @@ class SDL_to_MDFN_Surface_Wrapper : public MDFN_Surface private: SDL_Surface *ss; }; +#endif //HEADLESS #endif diff --git a/mednafen/src/file.cpp b/mednafen/src/file.cpp index 6edcb5b178..646f6e7d47 100644 --- a/mednafen/src/file.cpp +++ b/mednafen/src/file.cpp @@ -31,9 +31,10 @@ #include #endif - +#ifdef WANT_DEARCHIVE #include #include "compress/unzip.h" +#endif #include "file.h" #include "general.h" @@ -51,6 +52,7 @@ enum MDFN_FILETYPE_ZIP = 2, }; +#ifdef WANT_DEARCHIVE static const char *unzErrorString(int error_code) { if(error_code == UNZ_OK) @@ -72,7 +74,9 @@ static const char *unzErrorString(int error_code) else return("ZIP Unknown"); } +#endif //WANT_DEARCHIVE +#ifdef WANT_IPS bool MDFNFILE::ApplyIPS(FILE *ips) { uint8 header[5]; @@ -227,6 +231,7 @@ bool MDFNFILE::ApplyIPS(FILE *ips) //return(1); } +#endif //WANT_IPS // This function should ALWAYS close the system file "descriptor"(gzip library, zip library, or FILE *) it's given, // even if it errors out. @@ -282,6 +287,7 @@ bool MDFNFILE::MakeMemWrapAndClose(void *tz, int type) } #endif } + #ifdef WANT_DEARCHIVE else if(type == MDFN_FILETYPE_GZIP) { uint32_t cur_size = 0; @@ -355,6 +361,7 @@ bool MDFNFILE::MakeMemWrapAndClose(void *tz, int type) unzReadCurrentFile((unzFile)tz, f_data, ufo.uncompressed_size); } +#endif //WANT_DEARCHIVE ret = TRUE; @@ -363,6 +370,7 @@ bool MDFNFILE::MakeMemWrapAndClose(void *tz, int type) { fclose((FILE *)tz); } +#ifdef WANT_DEARCHIVE else if(type == MDFN_FILETYPE_GZIP) { gzclose((gzFile)tz); @@ -372,6 +380,7 @@ bool MDFNFILE::MakeMemWrapAndClose(void *tz, int type) unzCloseCurrentFile((unzFile)tz); unzClose((unzFile)tz); } +#endif return(ret); } @@ -406,14 +415,15 @@ MDFNFILE::~MDFNFILE() bool MDFNFILE::Open(const char *path, const FileExtensionSpecStruct *known_ext, const char *purpose, const bool suppress_notfound_pe) { - unzFile tz; - local_errno = 0; error_code = MDFNFILE_EC_OTHER; // Set to 0 at the end if the function succeeds. //f_data = (uint8 *)0xDEADBEEF; // Try opening it as a zip file first +#ifdef WANT_DEARCHIVE + unzFile tz; + if((tz = unzOpen(path))) { char tempu[1024]; @@ -497,6 +507,7 @@ bool MDFNFILE::Open(const char *path, const FileExtensionSpecStruct *known_ext, } else // If it's not a zip file, handle it as...another type of file! { + #endif //WANT_DEARCHIVE FILE *fp; if(!(fp = fopen(path, "rb"))) @@ -516,6 +527,8 @@ bool MDFNFILE::Open(const char *path, const FileExtensionSpecStruct *known_ext, return(0); } +#ifdef WANT_DEARCHIVE + uint32 gzmagic; gzmagic = ::fgetc(fp); @@ -580,6 +593,8 @@ bool MDFNFILE::Open(const char *path, const FileExtensionSpecStruct *known_ext, } // End gzip handling } // End normal and gzip file handling else to zip + #endif //WANT_DEARCHIVE + // FIXME: Handle extension fixing for cases where loaded filename is like "moo.moo/lalala" error_code = 0; diff --git a/mednafen/src/file.h b/mednafen/src/file.h index 649014a750..ff5ba8cbc8 100644 --- a/mednafen/src/file.h +++ b/mednafen/src/file.h @@ -22,7 +22,10 @@ class MDFNFILE return(Open(path.c_str(), known_ext, purpose, suppress_notfound_pe)); } - bool ApplyIPS(FILE *); +#ifdef WANT_IPS + bool ApplyIPS(FILE *); +#endif + bool Close(void); const int64 &size; diff --git a/mednafen/src/mednafen.cpp b/mednafen/src/mednafen.cpp index ccce1a8bef..2cc6a65a91 100644 --- a/mednafen/src/mednafen.cpp +++ b/mednafen/src/mednafen.cpp @@ -33,7 +33,7 @@ #include "state.h" #include "movie.h" -#include "video.h" +#include "video.h" #include "video/Deinterlacer.h" #include "file.h" #include "sound/WAVRecord.h" @@ -51,6 +51,11 @@ #include "cdrom/CDUtility.h" +//helping out MSVC +#ifndef S_ISREG +#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif + static const char *CSD_forcemono = gettext_noop("Force monophonic sound output."); static const char *CSD_enable = gettext_noop("Enable (automatic) usage of this module."); static const char *CSD_tblur = gettext_noop("Enable video temporal blur(50/50 previous/current frame by default)."); @@ -67,6 +72,7 @@ static MDFNSetting_EnumList CompressorList[] = { NULL, 0 }, }; +#ifdef WANT_AVDUMP static MDFNSetting_EnumList VCodec_List[] = { { "raw", (int)QTRecord::VCODEC_RAW, "Raw", @@ -80,6 +86,7 @@ static MDFNSetting_EnumList VCodec_List[] = { NULL, 0 }, }; +#endif //WANT_AVDUMP static const char *fname_extra = gettext_noop("See fname_format.txt for more information. Edit at your own risk."); @@ -112,7 +119,9 @@ static MDFNSetting MednafenSettings[] = { "qtrecord.w_double_threshold", MDFNSF_NOFLAGS, gettext_noop("Double the raw image's width if it's below this threshold."), NULL, MDFNST_UINT, "384", "0", "1073741824" }, { "qtrecord.h_double_threshold", MDFNSF_NOFLAGS, gettext_noop("Double the raw image's height if it's below this threshold."), NULL, MDFNST_UINT, "256", "0", "1073741824" }, +#ifdef WANT_AVDUMP { "qtrecord.vcodec", MDFNSF_NOFLAGS, gettext_noop("Video codec to use."), NULL, MDFNST_ENUM, "cscd", NULL, NULL, NULL, NULL, VCodec_List }, +#endif { NULL } }; @@ -158,8 +167,10 @@ static uint32 PortDataLenCache[16]; MDFNGI *MDFNGameInfo = NULL; +#ifdef WANT_AVDUMP static QTRecord *qtrecorder = NULL; static WAVRecord *wavrecorder = NULL; +#endif static Fir_Resampler<16> ff_resampler; static double LastSoundMultiplier; @@ -173,6 +184,7 @@ static Deinterlacer deint; static std::vector CDInterfaces; // FIXME: Cleanup on error out. +#ifdef WANT_AVDUMP bool MDFNI_StartWAVRecord(const char *path, double SoundRate) { try @@ -250,19 +262,25 @@ void MDFNI_StopWAVRecord(void) wavrecorder = NULL; } } +#endif //WANT_AVDUMP void MDFNI_CloseGame(void) { if(MDFNGameInfo) { - //zero 07-feb-2012 - no netplay - //if(MDFNnetplay) - // MDFNI_NetplayStop(); +#ifdef WANT_NETPLAY + if(MDFNnetplay) + MDFNI_NetplayStop(); +#endif +#ifdef WANT_MOVIE MDFNMOV_Stop(); +#endif +#ifdef WANT_CHEATS if(MDFNGameInfo->GameType != GMT_PLAYER) MDFN_FlushGameCheats(0); +#endif MDFNGameInfo->CloseGame(); if(MDFNGameInfo->name) @@ -273,7 +291,10 @@ void MDFNI_CloseGame(void) MDFNMP_Kill(); MDFNGameInfo = NULL; + +#ifdef WANT_REWIND MDFN_StateEvilEnd(); +#endif for(unsigned i = 0; i < CDInterfaces.size(); i++) delete CDInterfaces[i]; @@ -362,7 +383,9 @@ extern MDFNGI EmulatedWSwan; extern MDFNGI EmulatedSMS, EmulatedGG; #endif +#ifdef WANT_CDPLAY_EMU extern MDFNGI EmulatedCDPlay; +#endif std::vector MDFNSystems; static std::list MDFNSystemsPrio; @@ -455,7 +478,7 @@ MDFNGI *MDFNI_LoadCD(const char *force_module, const char *devicename) for(unsigned i = 0; i < file_list.size(); i++) { -#if 1 +#ifdef WANT_CDIF_MT CDInterfaces.push_back(new CDIF_MT(file_list[i].c_str())); #else CDInterfaces.push_back(new CDIF_ST(file_list[i].c_str())); @@ -466,7 +489,7 @@ MDFNGI *MDFNI_LoadCD(const char *force_module, const char *devicename) } else { -#if 1 +#ifdef WANT_CDIF_MT CDInterfaces.push_back(new CDIF_MT(devicename)); #else CDInterfaces.push_back(new CDIF_ST(devicename)); @@ -625,13 +648,11 @@ MDFNGI *MDFNI_LoadCD(const char *force_module, const char *devicename) TBlur_Init(); - #ifndef HEADLESS if(MDFNGameInfo->GameType != GMT_PLAYER) { MDFN_LoadGameCheats(NULL); MDFNMP_InstallReadPatches(); } -#endif last_sound_rate = -1; memset(&last_pixel_format, 0, sizeof(MDFN_PixelFormat)); @@ -639,6 +660,7 @@ MDFNGI *MDFNI_LoadCD(const char *force_module, const char *devicename) return(MDFNGameInfo); } +#ifdef WANT_IPS // Return FALSE on fatal error(IPS file found but couldn't be applied), // or TRUE on success(IPS patching succeeded, or IPS file not found). static bool LoadIPS(MDFNFILE &GameFile, const char *path) @@ -674,6 +696,8 @@ static bool LoadIPS(MDFNFILE &GameFile, const char *path) return(1); } +#endif WANT_IPS + MDFNGI *MDFNI_LoadGame(const char *force_module, const char *name) { @@ -686,11 +710,10 @@ MDFNGI *MDFNI_LoadGame(const char *force_module, const char *name) return(MDFNI_LoadCD(force_module, name)); } - //zero 07-feb-2012 - remove some cd loading capability - //if(!stat(name, &stat_buf) && !S_ISREG(stat_buf.st_mode)) - //{ - // return(MDFNI_LoadCD(force_module, name)); - //} + if(!stat(name, &stat_buf) && !S_ISREG(stat_buf.st_mode)) + { + return(MDFNI_LoadCD(force_module, name)); + } MDFNI_CloseGame(); @@ -731,12 +754,14 @@ MDFNGI *MDFNI_LoadGame(const char *force_module, const char *name) return 0; } +#ifdef WANT_IPS if(!LoadIPS(GameFile, MDFN_MakeFName(MDFNMKF_IPS, 0, 0).c_str())) { MDFNGameInfo = NULL; GameFile.Close(); return(0); } +#endif MDFNGameInfo = NULL; @@ -840,10 +865,17 @@ MDFNGI *MDFNI_LoadGame(const char *force_module, const char *name) MDFNDBG_PostGameLoad(); #endif +#ifndef HEADLESS MDFNSS_CheckStates(); - MDFNMOV_CheckMovies(); +#endif +#ifdef WANT_MOVIE + MDFNMOV_CheckMovies(); +#endif + +#ifdef WANT_SOFTGUI MDFN_ResetMessages(); // Save state, status messages, etc. +#endif MDFN_indent(-2); @@ -868,7 +900,9 @@ MDFNGI *MDFNI_LoadGame(const char *force_module, const char *name) TBlur_Init(); +#ifdef WANT_REWIND MDFN_StateEvilBegin(); +#endif last_sound_rate = -1; @@ -1035,7 +1069,9 @@ bool MDFNI_InitializeModules(const std::vector &ExternalSystems) &EmulatedGG, #endif + #ifdef WANT_CDPLAY_EMU &EmulatedCDPlay + #endif }; std::string i_modules_string, e_modules_string; @@ -1085,11 +1121,15 @@ int MDFNI_Initialize(const char *basedir, const std::vector &Driver memset(PortDataLenCache, 0, sizeof(PortDataLenCache)); memset(PortDeviceCache, 0, sizeof(PortDeviceCache)); +#ifdef WANT_REWIND lzo_init(); +#endif MDFNI_SetBaseDirectory(basedir); +#ifdef WANT_SOFTGUI MDFN_InitFontData(); +#endif // Generate dynamic settings for(unsigned int i = 0; i < MDFNSystems.size(); i++) @@ -1171,7 +1211,7 @@ static void ProcessAudio(EmulateSpecStruct *espec) int32 SoundBufSize = espec->SoundBufSize - espec->SoundBufSizeALMS; const int32 SoundBufMaxSize = espec->SoundBufMaxSize - espec->SoundBufSizeALMS; - +#ifdef WANT_AVDUMP if(qtrecorder && (volume_save != 1 || multiplier_save != 1)) { int32 orig_size = SoundBufPristine.size(); @@ -1180,7 +1220,9 @@ static void ProcessAudio(EmulateSpecStruct *espec) for(int i = 0; i < SoundBufSize * MDFNGameInfo->soundchan; i++) SoundBufPristine[orig_size + i] = SoundBuf[i]; } +#endif //WANT_AVDUMP +#ifdef WANT_REWIND if(espec->NeedSoundReverse) { int16 *yaybuf = SoundBuf; @@ -1205,7 +1247,9 @@ static void ProcessAudio(EmulateSpecStruct *espec) } } } +#endif //WANT_REWIND +#ifdef WANT_AVDUMP try { if(wavrecorder) @@ -1217,6 +1261,7 @@ static void ProcessAudio(EmulateSpecStruct *espec) delete wavrecorder; wavrecorder = NULL; } +#endif if(multiplier_save != LastSoundMultiplier) { @@ -1311,11 +1356,11 @@ static void ProcessAudio(EmulateSpecStruct *espec) } // end to: if(espec->SoundBuf && espec->SoundBufSize) } +#ifndef HEADLESS void MDFN_MidSync(EmulateSpecStruct *espec) { - //zero 07-feb-2012 - no netplay - //if(MDFNnetplay) - // return; + if(MDFNnetplay) + return; ProcessAudio(espec); @@ -1328,6 +1373,7 @@ void MDFN_MidSync(EmulateSpecStruct *espec) espec->SoundBufSizeALMS = espec->SoundBufSize; espec->MasterCyclesALMS = espec->MasterCycles; } +#endif void MDFNI_Emulate(EmulateSpecStruct *espec) { @@ -1362,6 +1408,7 @@ void MDFNI_Emulate(EmulateSpecStruct *espec) ff_resampler.buffer_size((espec->SoundRate / 2) * 2); } +#ifdef WANT_AVDUMP // We want to record movies without any dropped video frames and without fast-forwarding sound distortion and without custom volume. // The same goes for WAV recording(sans the dropped video frames bit :b). if(qtrecorder || wavrecorder) @@ -1372,23 +1419,30 @@ void MDFNI_Emulate(EmulateSpecStruct *espec) volume_save = espec->SoundVolume; espec->SoundVolume = 1; } +#endif - //zero 07-feb-2012 - no netplay - //if(MDFNnetplay) - //{ - // NetplayUpdate((const char**)PortDeviceCache, PortDataCache, PortDataLenCache, MDFNGameInfo->InputInfo->InputPorts); - //} +#ifdef WANT_NETPLAY + if(MDFNnetplay) + { + NetplayUpdate((const char**)PortDeviceCache, PortDataCache, PortDataLenCache, MDFNGameInfo->InputInfo->InputPorts); + } +#endif +#ifdef WANT_MOVIE for(int x = 0; x < 16; x++) if(PortDataCache[x]) MDFNMOV_AddJoy(PortDataCache[x], PortDataLenCache[x]); +#endif +#ifdef WANT_AVDUMP if(qtrecorder) espec->skip = 0; +#endif if(TBlur_IsOn()) espec->skip = 0; +#ifdef WANT_REWIND if(espec->NeedRewind) { if(MDFNMOV_IsPlaying()) @@ -1396,26 +1450,27 @@ void MDFNI_Emulate(EmulateSpecStruct *espec) espec->NeedRewind = 0; MDFN_DispMessage(_("Can't rewind during movie playback.")); } -//zero 07-feb-2012 - no netplay - //else if(MDFNnetplay) - //{ - // espec->NeedRewind = 0; - // MDFN_DispMessage(_("Silly-billy, can't rewind during netplay.")); - //} + else if(MDFNnetplay) + { + espec->NeedRewind = 0; + MDFN_DispMessage(_("Silly-billy, can't rewind during netplay.")); + } else if(MDFNGameInfo->GameType == GMT_PLAYER) { espec->NeedRewind = 0; MDFN_DispMessage(_("Music player rewinding is unsupported.")); } } +#endif // Don't even save states with state rewinding if netplay is enabled, it will degrade netplay performance, and can cause // desynchs with some emulation(IE SNES based on bsnes). - +#if defined(WANT_NETPLAY) && defined(WANT_REWIND) if(MDFNnetplay) espec->NeedSoundReverse = false; else espec->NeedSoundReverse = MDFN_StateEvil(espec->NeedRewind); +#endif MDFNGameInfo->Emulate(espec); @@ -1450,6 +1505,7 @@ void MDFNI_Emulate(EmulateSpecStruct *espec) ProcessAudio(espec); +#ifdef WANT_AVDUMP if(qtrecorder) { int16 *sb_backup = espec->SoundBuf; @@ -1477,6 +1533,7 @@ void MDFNI_Emulate(EmulateSpecStruct *espec) espec->SoundBuf = sb_backup; espec->SoundBufSize = sbs_backup; } +#endif TBlur_Run(espec); } @@ -1611,16 +1668,21 @@ void MDFN_DoSimpleCommand(int cmd) void MDFN_QSimpleCommand(int cmd) { - //zero 07-feb-2012 - no netplay - //if(MDFNnetplay) - // MDFNNET_SendCommand(cmd, 0); - //else - { +#ifdef WANT_NETPLAY + if(MDFNnetplay) + MDFNNET_SendCommand(cmd, 0); + else +#endif +{ +#ifdef HEADLESS + MDFN_DoSimpleCommand(cmd); +#else if(!MDFNMOV_IsPlaying()) { MDFN_DoSimpleCommand(cmd); MDFNMOV_AddCommand(cmd); } +#endif } } diff --git a/mednafen/src/movie.h b/mednafen/src/movie.h index 6f300249d1..4e990ac691 100644 --- a/mednafen/src/movie.h +++ b/mednafen/src/movie.h @@ -1,6 +1,8 @@ #ifndef _MOVIE_H #define _MOVIE_H +#ifdef WANT_MOVIE + void MDFNI_SelectMovie(int); #include "movie-driver.h" @@ -14,4 +16,7 @@ bool MDFNMOV_IsRecording(void); void MDFNMOV_ForceRecord(StateMem *sm); StateMem MDFNMOV_GrabRewindJoy(void); void MDFNMOV_RecordState(); -#endif + +#endif //WANT_MOVIE + +#endif //_MOVIE_H diff --git a/mednafen/src/psx/cdc.cpp b/mednafen/src/psx/cdc.cpp index fe59a30c44..b462803ed1 100644 --- a/mednafen/src/psx/cdc.cpp +++ b/mednafen/src/psx/cdc.cpp @@ -431,6 +431,7 @@ bool PS_CDC::DecodeSubQ(uint8 *subpw) return(false); } +#include "PACKED.h" struct XA_Subheader { uint8 file; @@ -443,13 +444,16 @@ struct XA_Subheader uint8 submode_dup; uint8 coding_dup; -}; // __attribute__((__packed__)); //zero 07-feb-2012 +}; +#include "PACKED_END.h"//zero 07-feb-2012 +#include "PACKED.h" struct XA_SoundGroup { uint8 params[16]; uint8 samples[112]; -}; // __attribute__((__packed__)); //zero 07-feb-2012 +}; +#include "PACKED_END.h" //zero 07-feb-2012 #define XA_SUBMODE_EOF 0x80 #define XA_SUBMODE_REALTIME 0x40 diff --git a/mednafen/src/psx/gpu.cpp b/mednafen/src/psx/gpu.cpp index 5eeb497c43..9192e96b18 100644 --- a/mednafen/src/psx/gpu.cpp +++ b/mednafen/src/psx/gpu.cpp @@ -1190,9 +1190,11 @@ pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp) } char buffer[256]; - trio_snprintf(buffer, sizeof(buffer), _("VIDEO STANDARD MISMATCH")); - DrawTextTrans(surface->pixels + ((DisplayRect->h / 2) - (13 / 2)) * surface->pitch32, surface->pitch32 << 2, DisplayRect->w, (UTF8*)buffer, - surface->MakeColor(0x00, 0xFF, 0x00), true, MDFN_FONT_6x13_12x13); + #ifdef WANT_SOFTGUI + trio_snprintf(buffer, sizeof(buffer), _("VIDEO STANDARD MISMATCH")); + DrawTextTrans(surface->pixels + ((DisplayRect->h / 2) - (13 / 2)) * surface->pitch32, surface->pitch32 << 2, DisplayRect->w, (UTF8*)buffer, + surface->MakeColor(0x00, 0xFF, 0x00), true, MDFN_FONT_6x13_12x13); + #endif } else { diff --git a/mednafen/src/psx/psx.cpp b/mednafen/src/psx/psx.cpp index 314ef1de56..850d7084d1 100644 --- a/mednafen/src/psx/psx.cpp +++ b/mednafen/src/psx/psx.cpp @@ -806,6 +806,7 @@ static void Emulate(EmulateSpecStruct *espec) espec->MasterCycles = timestamp; +#ifndef WANT_SOFTGUI if(psf_loader) { if(!espec->skip) @@ -814,7 +815,7 @@ static void Emulate(EmulateSpecStruct *espec) Player_Draw(espec->surface, &espec->DisplayRect, 0, espec->SoundBuf, espec->SoundBufSize); } } - +#endif // Save memcards if dirty. for(int i = 0; i < 8; i++) { diff --git a/mednafen/src/qtrecord.h b/mednafen/src/qtrecord.h index 7521e32064..9fa24af711 100644 --- a/mednafen/src/qtrecord.h +++ b/mednafen/src/qtrecord.h @@ -7,6 +7,8 @@ #include #include +#ifdef WANT_AVDUMP + class QTRecord { public: @@ -113,4 +115,6 @@ class QTRecord bool Finished; }; +#endif WANT_AVDUMP + #endif diff --git a/mednafen/src/state.cpp b/mednafen/src/state.cpp index db32dab6be..1aa675cad1 100644 --- a/mednafen/src/state.cpp +++ b/mednafen/src/state.cpp @@ -846,6 +846,8 @@ int MDFNSS_Load(const char *fname, const char *suffix) } } +//here we have a whole bunch of UI-related savestate functionality which isnt needed in headless +#ifndef HEADLESS void MDFNSS_CheckStates(void) { time_t last_time = 0; @@ -974,6 +976,7 @@ void MDFNI_SaveState(const char *fname, const char *suffix, const MDFN_Surface * MDFNSS_Save(fname, suffix, surface, DisplayRect, LineWidths); } + void MDFNI_LoadState(const char *fname, const char *suffix) { if(!MDFNGameInfo->StateAction) @@ -988,17 +991,19 @@ void MDFNI_LoadState(const char *fname, const char *suffix) */ if(MDFNSS_Load(fname, suffix)) { - //zero 07-feb-2012 - no netplay - //if(MDFNnetplay) - // { - // NetplaySendState(); - // } + if(MDFNnetplay) + { + NetplaySendState(); + } if(MDFNMOV_IsRecording()) MDFNMOV_RecordState(); } } +#endif //HEADLESS +//here we have a lot of rewind-related functions +#ifdef WANT_REWIND #include "compress/minilzo.h" #include "compress/quicklz.h" #include "compress/blz.h" @@ -1275,3 +1280,4 @@ void MDFNI_EnableStateRewind(int enable) MDFN_StateEvilBegin(); } +#endif //WANT_REWIND \ No newline at end of file diff --git a/mednafen/src/state.h b/mednafen/src/state.h index c7b53690d0..83aa674a32 100644 --- a/mednafen/src/state.h +++ b/mednafen/src/state.h @@ -37,7 +37,9 @@ int smem_read32le(StateMem *st, uint32 *b); int MDFNSS_SaveSM(StateMem *st, int wantpreview_and_ts, int data_only, const MDFN_Surface *surface = (MDFN_Surface *)NULL, const MDFN_Rect *DisplayRect = (MDFN_Rect*)NULL, const MDFN_Rect *LineWidths = (MDFN_Rect *)NULL); int MDFNSS_LoadSM(StateMem *st, int haspreview, int data_only); +#ifndef HEADLESS void MDFNSS_CheckStates(void); +#endif // Flag for a single, >= 1 byte native-endian variable #define MDFNSTATE_RLSB 0x80000000 @@ -138,10 +140,12 @@ class SSDescriptor int MDFNSS_StateAction(StateMem *st, int load, int data_only, std::vector §ions); int MDFNSS_StateAction(StateMem *st, int load, int data_only, SFORMAT *sf, const char *name, bool optional = 0); +#ifdef WANT_REWIND void MDFN_StateEvilFlushMovieLove(void); bool MDFN_StateEvilIsRunning(void); void MDFN_StateEvilBegin(void); void MDFN_StateEvilEnd(void); int MDFN_StateEvil(int); +#endif #endif diff --git a/mednafen/src/video.h b/mednafen/src/video.h index 06d3628bc8..f463aac3e1 100644 --- a/mednafen/src/video.h +++ b/mednafen/src/video.h @@ -7,12 +7,13 @@ #include +#ifdef WANT_SOFTGUI void MDFN_ResetMessages(void); void MDFN_InitFontData(void); void MDFN_DispMessage(const char *format, ...) throw() MDFN_FORMATSTR(printf, 1, 2); int MDFN_InitVirtualVideo(void); void MDFN_KillVirtualVideo(void); - +#endif #endif