Merge branch 'develop'
This commit is contained in:
25
dist/fgo/segatools.ini
vendored
25
dist/fgo/segatools.ini
vendored
@ -194,19 +194,20 @@ stickDeadzone=7849
|
|||||||
[keyboard]
|
[keyboard]
|
||||||
; Keyboard bindings:
|
; Keyboard bindings:
|
||||||
|
|
||||||
; Stick controls (default: WASD)
|
; Keyboard movement
|
||||||
|
; Default is WASD keys for Joystick movemnt
|
||||||
up=0x57
|
up=0x57
|
||||||
left=0x41
|
|
||||||
down=0x53
|
down=0x53
|
||||||
|
left=0x41
|
||||||
right=0x44
|
right=0x44
|
||||||
|
|
||||||
; Attack (default: Space)
|
; Dash button. Default is the Left Shift,
|
||||||
attack=0x20
|
dash=0xA0
|
||||||
; Dash (default: LSHIFT)
|
; Cycle Target button. Default is the F key.
|
||||||
dash=0xa0
|
target=0x46
|
||||||
; Change Target (default: J)
|
; Attack button, Default is the Right Mouse Button.
|
||||||
target=0x4A
|
attack=0x02
|
||||||
; Re-center camera (default: K)
|
; Noble Phantasm button. Default is the Spacebar
|
||||||
camera=0x4B
|
np=0x20
|
||||||
; Noble Phantasm (default: L)
|
; Center Camera, Default is the C key
|
||||||
np=0x4C
|
camera=0x43
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <dinput.h>
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include "apm3io/backend.h"
|
#include "apm3io/backend.h"
|
||||||
@ -25,9 +20,6 @@ static HRESULT apm3_di_config_apply(const struct apm3_di_config *cfg);
|
|||||||
static BOOL CALLBACK apm3_di_enum_callback(
|
static BOOL CALLBACK apm3_di_enum_callback(
|
||||||
const DIDEVICEINSTANCEW *dev,
|
const DIDEVICEINSTANCEW *dev,
|
||||||
void *ctx);
|
void *ctx);
|
||||||
static BOOL CALLBACK apm3_di_enum_callback_shifter(
|
|
||||||
const DIDEVICEINSTANCEW *dev,
|
|
||||||
void *ctx);
|
|
||||||
static void apm3_di_get_gamebtns(uint16_t *gamebtn_out);
|
static void apm3_di_get_gamebtns(uint16_t *gamebtn_out);
|
||||||
static uint8_t apm3_di_decode_pov(DWORD pov);
|
static uint8_t apm3_di_decode_pov(DWORD pov);
|
||||||
|
|
||||||
@ -42,7 +34,7 @@ static IDirectInputDevice8W *apm3_di_dev;
|
|||||||
static IDirectInputEffect *apm3_di_fx;
|
static IDirectInputEffect *apm3_di_fx;
|
||||||
static uint8_t apm3_di_home;
|
static uint8_t apm3_di_home;
|
||||||
static uint8_t apm3_di_start;
|
static uint8_t apm3_di_start;
|
||||||
static uint8_t apm3_di_button[8];
|
static uint8_t apm3_di_button[APM3_BUTTON_COUNT];
|
||||||
|
|
||||||
HRESULT apm3_di_init(
|
HRESULT apm3_di_init(
|
||||||
const struct apm3_di_config *cfg,
|
const struct apm3_di_config *cfg,
|
||||||
@ -50,10 +42,6 @@ HRESULT apm3_di_init(
|
|||||||
const struct apm3_io_backend **backend)
|
const struct apm3_io_backend **backend)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HMODULE dinput8;
|
|
||||||
HRESULT (WINAPI *api_entry)(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
|
|
||||||
wchar_t dll_path[MAX_PATH];
|
|
||||||
UINT path_pos;
|
|
||||||
|
|
||||||
assert(cfg != NULL);
|
assert(cfg != NULL);
|
||||||
assert(backend != NULL);
|
assert(backend != NULL);
|
||||||
@ -72,6 +60,18 @@ HRESULT apm3_di_init(
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr = DirectInput8Create(
|
||||||
|
inst,
|
||||||
|
DIRECTINPUT_VERSION,
|
||||||
|
&IID_IDirectInput8W,
|
||||||
|
(void**)&apm3_di_api,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
if (FAILED(hr)) {
|
||||||
|
dprintf("DirectInput: DirectInput8Create failed: %08x\n", (int)hr);
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
hr = IDirectInput8_EnumDevices(
|
hr = IDirectInput8_EnumDevices(
|
||||||
apm3_di_api,
|
apm3_di_api,
|
||||||
DI8DEVCLASS_GAMECTRL,
|
DI8DEVCLASS_GAMECTRL,
|
||||||
@ -138,7 +138,7 @@ static HRESULT apm3_di_config_apply(const struct apm3_di_config *cfg)
|
|||||||
dprintf("Stick: Start button . . . : %i\n", cfg->start);
|
dprintf("Stick: Start button . . . : %i\n", cfg->start);
|
||||||
|
|
||||||
/* Print the configuration for all 8 buttons */
|
/* Print the configuration for all 8 buttons */
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < APM3_BUTTON_COUNT; i++) {
|
||||||
dprintf("Stick: Button %i . . . . . : %i\n", i, cfg->button[i]);
|
dprintf("Stick: Button %i . . . . . : %i\n", i, cfg->button[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ static HRESULT apm3_di_config_apply(const struct apm3_di_config *cfg)
|
|||||||
apm3_di_start = cfg->start;
|
apm3_di_start = cfg->start;
|
||||||
apm3_di_home = cfg->home;
|
apm3_di_home = cfg->home;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < APM3_BUTTON_COUNT; i++) {
|
||||||
apm3_di_button[i] = cfg->button[i];
|
apm3_di_button[i] = cfg->button[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,5 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <dinput.h>
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
|
|
||||||
#include "idacio/backend.h"
|
#include "idacio/backend.h"
|
||||||
#include "idacio/config.h"
|
#include "idacio/config.h"
|
||||||
@ -88,10 +82,6 @@ HRESULT idac_di_init(
|
|||||||
const struct idac_io_backend **backend)
|
const struct idac_io_backend **backend)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HMODULE dinput8;
|
|
||||||
HRESULT (WINAPI *api_entry)(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
|
|
||||||
wchar_t dll_path[MAX_PATH];
|
|
||||||
UINT path_pos;
|
|
||||||
|
|
||||||
assert(cfg != NULL);
|
assert(cfg != NULL);
|
||||||
assert(backend != NULL);
|
assert(backend != NULL);
|
||||||
@ -110,38 +100,7 @@ HRESULT idac_di_init(
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initial D THE ARCADE has some built-in DirectInput support that is not
|
hr = DirectInput8Create(
|
||||||
particularly useful. idachook shorts this out by redirecting dinput8.dll
|
|
||||||
to a no-op implementation of DirectInput. However, idacio does need to
|
|
||||||
talk to the real operating system implementation of DirectInput without
|
|
||||||
the stub DLL interfering, so build a path to
|
|
||||||
C:\Windows\System32\dinput.dll here. */
|
|
||||||
|
|
||||||
dll_path[0] = L'\0';
|
|
||||||
path_pos = GetSystemDirectoryW(dll_path, _countof(dll_path));
|
|
||||||
wcscat_s(
|
|
||||||
dll_path + path_pos,
|
|
||||||
_countof(dll_path) - path_pos,
|
|
||||||
L"\\dinput8.dll");
|
|
||||||
|
|
||||||
dinput8 = LoadLibraryW(dll_path);
|
|
||||||
|
|
||||||
if (dinput8 == NULL) {
|
|
||||||
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
||||||
dprintf("DirectInput: LoadLibrary failed: %08x\n", (int) hr);
|
|
||||||
|
|
||||||
return hr;
|
|
||||||
}
|
|
||||||
|
|
||||||
api_entry = (void *) GetProcAddress(dinput8, "DirectInput8Create");
|
|
||||||
|
|
||||||
if (api_entry == NULL) {
|
|
||||||
dprintf("DirectInput: GetProcAddress failed\n");
|
|
||||||
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = api_entry(
|
|
||||||
inst,
|
inst,
|
||||||
DIRECTINPUT_VERSION,
|
DIRECTINPUT_VERSION,
|
||||||
&IID_IDirectInput8W,
|
&IID_IDirectInput8W,
|
||||||
@ -149,8 +108,7 @@ HRESULT idac_di_init(
|
|||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
dprintf("DirectInput: API create failed: %08x\n", (int) hr);
|
dprintf("DirectInput: DirectInput8Create failed: %08x\n", (int)hr);
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,5 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <dinput.h>
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
|
|
||||||
#include "swdcio/backend.h"
|
#include "swdcio/backend.h"
|
||||||
#include "swdcio/config.h"
|
#include "swdcio/config.h"
|
||||||
@ -81,10 +75,6 @@ HRESULT swdc_di_init(
|
|||||||
const struct swdc_io_backend **backend)
|
const struct swdc_io_backend **backend)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HMODULE dinput8;
|
|
||||||
HRESULT (WINAPI *api_entry)(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
|
|
||||||
wchar_t dll_path[MAX_PATH];
|
|
||||||
UINT path_pos;
|
|
||||||
|
|
||||||
assert(cfg != NULL);
|
assert(cfg != NULL);
|
||||||
assert(backend != NULL);
|
assert(backend != NULL);
|
||||||
@ -103,38 +93,7 @@ HRESULT swdc_di_init(
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SWDC has some built-in DirectInput support that is not
|
hr = DirectInput8Create(
|
||||||
particularly useful. swdchook shorts this out by redirecting dinput8.dll
|
|
||||||
to a no-op implementation of DirectInput. However, swdcio does need to
|
|
||||||
talk to the real operating system implementation of DirectInput without
|
|
||||||
the stub DLL interfering, so build a path to
|
|
||||||
C:\Windows\System32\dinput.dll here. */
|
|
||||||
|
|
||||||
dll_path[0] = L'\0';
|
|
||||||
path_pos = GetSystemDirectoryW(dll_path, _countof(dll_path));
|
|
||||||
wcscat_s(
|
|
||||||
dll_path + path_pos,
|
|
||||||
_countof(dll_path) - path_pos,
|
|
||||||
L"\\dinput8.dll");
|
|
||||||
|
|
||||||
dinput8 = LoadLibraryW(dll_path);
|
|
||||||
|
|
||||||
if (dinput8 == NULL) {
|
|
||||||
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
||||||
dprintf("DirectInput: LoadLibrary failed: %08x\n", (int) hr);
|
|
||||||
|
|
||||||
return hr;
|
|
||||||
}
|
|
||||||
|
|
||||||
api_entry = (void *) GetProcAddress(dinput8, "DirectInput8Create");
|
|
||||||
|
|
||||||
if (api_entry == NULL) {
|
|
||||||
dprintf("DirectInput: GetProcAddress failed\n");
|
|
||||||
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = api_entry(
|
|
||||||
inst,
|
inst,
|
||||||
DIRECTINPUT_VERSION,
|
DIRECTINPUT_VERSION,
|
||||||
&IID_IDirectInput8W,
|
&IID_IDirectInput8W,
|
||||||
@ -142,7 +101,7 @@ HRESULT swdc_di_init(
|
|||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
dprintf("DirectInput: API create failed: %08x\n", (int) hr);
|
dprintf("DirectInput: DirectInput8Create failed: %08x\n", (int) hr);
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user