summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src
diff options
context:
space:
mode:
authornakeee <nakeee@gmail.com>2010-01-29 07:29:11 +0000
committernakeee <nakeee@gmail.com>2010-01-29 07:29:11 +0000
commitfefcc6f5b58ffde742548d6fda055323a3aff6be (patch)
tree309dc978e58dbd545e0f58e48bb54b2107b12dec /Source/Core/InputCommon/Src
parentfdaa0e8d4cd0801ba94f711d2a8c37f1211f37da (diff)
Build fix
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4983 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/InputCommon/Src')
-rw-r--r--Source/Core/InputCommon/Src/Configuration.cpp68
1 files changed, 26 insertions, 42 deletions
diff --git a/Source/Core/InputCommon/Src/Configuration.cpp b/Source/Core/InputCommon/Src/Configuration.cpp
index 4c8b95527d..43b6169fa5 100644
--- a/Source/Core/InputCommon/Src/Configuration.cpp
+++ b/Source/Core/InputCommon/Src/Configuration.cpp
@@ -1,16 +1,5 @@
-
-// Project description
-// -------------------
-// Name: Input Configuration and Calibration
-// Description: Common SDL Input Functions
-//
-// Author: Falcon4ever (nJoy@falcon4ever.com, www.multigesture.net), JPeterson etc
// Copyright (C) 2003 Dolphin Project.
-//
-//
-// Licensetype: GNU General Public License (GPL)
-//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.
@@ -27,8 +16,6 @@
// http://code.google.com/p/dolphin-emu/
//
-// Include
-// -------------------
#if defined HAVE_WX && HAVE_WX
#include <wx/wx.h>
#endif
@@ -38,14 +25,13 @@
#include <Windows.h>
#endif
-#include "SDL.h" // Local
+#include "SDL_Util.h" // Local
namespace InputCommon
{
// Degree to radian and back
-// -------------
float Deg2Rad(float Deg)
{
return Deg * (float)M_PI / 180.0f;
@@ -56,7 +42,6 @@ float Rad2Deg(float Rad)
}
// Check if the pad is within the dead zone, we assume the range is 0x8000
-// ----------------
float CoordinatesToRadius(int x, int y)
{
return sqrt(pow((float)x, 2) + pow((float)y, 2));
@@ -77,17 +62,18 @@ bool IsDeadZone(float DeadZone, int x, int y)
}
// Scale down stick values from 0x8000 to 0x80
-/* ----------------
- The value returned by SDL_JoystickGetAxis is a signed integer s16
- (-32768 to 32767). The value used for the gamecube controller is an unsigned
- char u8 (0 to 255) with neutral at 0x80 (128), so that it's equivalent to a signed
- -128 to 127.
-*/
-// ---------------------
+/*
+ The value returned by SDL_JoystickGetAxis is a signed integer s16 (-32768 to
+ 32767). The value used for the gamecube controller is an unsigned char u8 (0
+ to 255) with neutral at 0x80 (128), so that it's equivalent to a signed -128
+ to 127. */
+//
int Pad_Convert(int _val)
{
- /* If the limits on PadState[].axis[] actually is a u16 then we don't need this
- but if it's not actually limited to that we need to apply these limits */
+
+ /* If the limits on PadState[].axis[] actually is a u16 then we don't need
+ this but if it's not actually limited to that we need to apply these
+ limits */
if(_val > 32767) _val = 32767; // upper limit
if(_val < -32768) _val = -32768; // lower limit
@@ -103,7 +89,6 @@ int Pad_Convert(int _val)
}
// Adjust the radius
-// ----------------
void RadiusAdjustment(s8 &_x, s8 &_y, int _Radius)
{
// Get the radius setting
@@ -115,13 +100,14 @@ void RadiusAdjustment(s8 &_x, s8 &_y, int _Radius)
_y = (s8)y;
}
-/* Convert the stick raidus from a square or rounded box to a circular radius. I don't know what
- input values the actual GC controller produce for the GC, it may be a square, a circle or
- something in between. But one thing that is certain is that PC pads differ in their output
- (as shown in the list below), so it may be beneficiary to convert whatever radius they
- produce to the radius the GC games expect. This is the first implementation of this
- that convert a square radius to a circual radius. Use the advanced settings to enable
- and calibrate it.
+/* Convert the stick raidus from a square or rounded box to a circular
+ radius. I don't know what input values the actual GC controller produce for
+ the GC, it may be a square, a circle or something in between. But one thing
+ that is certain is that PC pads differ in their output (as shown in the list
+ below), so it may be beneficiary to convert whatever radius they produce to
+ the radius the GC games expect. This is the first implementation of this
+ that convert a square radius to a circual radius. Use the advanced settings
+ to enable and calibrate it.
Observed diagonals:
Perfect circle: 71% = sin(45)
@@ -130,11 +116,11 @@ void RadiusAdjustment(s8 &_x, s8 &_y, int _Radius)
XBox 360 Wireless: 85%
GameCube Controller (Third Party) with EMS Trio Linker Plus II: 60%
*/
-// ---------------------
-/* Calculate the distance from the outer edges of the box to the outer edges of the circle inside the box
- at any angle from 0 to 360. The returned value is 1 + Distance, for example at most sqrt(2) in the
- corners and at least 1.0 at the horizontal and vertical angles. */
+/* Calculate the distance from the outer edges of the box to the outer edges of
+ the circle inside the box at any angle from 0 to 360. The returned value is
+ 1 + Distance, for example at most sqrt(2) in the corners and at least 1.0 at
+ the horizontal and vertical angles. */
float Square2CircleDistance(float deg)
{
// See if we have to adjust the angle
@@ -157,9 +143,7 @@ void Square2Circle(int &_x, int &_y, int _Diagonal, bool Circle2Square)
if(_x > 32767) _x = 32767; if(_y > 32767) _y = 32767; // upper limit
if(_x < -32768) _x = -32768; if(_y < -32768) _y = -32768; // lower limit
- // ====================================
// Convert to circle
- // -----------
// Get the manually configured diagonal distance
float Diagonal = (float)_Diagonal / 100.0f;
@@ -167,8 +151,9 @@ void Square2Circle(int &_x, int &_y, int _Diagonal, bool Circle2Square)
float OrigDist = sqrt( pow((float)_y, 2) + pow((float)_x, 2) ); // Get current distance
float deg = Rad2Deg(atan2((float)_y, (float)_x)); // Get current angle
- /* Calculate the actual distance between the maxium diagonal values, and the outer edges of the
- square. A diagonal of 85% means a maximum distance of 0.85 * sqrt(2) ~1.2 in the diagonals. */
+ /* Calculate the actual distance between the maxium diagonal values, and
+ the outer edges of the square. A diagonal of 85% means a maximum
+ distance of 0.85 * sqrt(2) ~1.2 in the diagonals. */
float corner_circle_dist = ( Diagonal / sin(Deg2Rad(45.0f)) );
float SquareDist = Square2CircleDistance(deg);
// The original-to-square distance adjustment
@@ -203,7 +188,6 @@ void Square2Circle(int &_x, int &_y, int _Diagonal, bool Circle2Square)
}
// Windows Virtual Key Codes Names
-// ---------------------
#ifdef _WIN32
std::string VKToString(int keycode)
{