summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwwylele <wwylele@gmail.com>2016-03-25 09:39:59 +0100
committerwwylele <wwylele@gmail.com>2016-03-25 10:22:02 +0100
commit1d2070d0d30448f79d8e39c614db4375d23b58c4 (patch)
tree87899f4934fabc002b010f68c9d0996507b4f664
parentimplement accel and gyro backend (diff)
downloadyuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar.gz
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar.bz2
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar.lz
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar.xz
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.tar.zst
yuzu-1d2070d0d30448f79d8e39c614db4375d23b58c4.zip
-rw-r--r--src/core/hle/service/hid/hid.cpp15
-rw-r--r--src/core/hle/service/hid/hid.h14
2 files changed, 20 insertions, 9 deletions
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index 56bf89fa8..b27ab6d9b 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -251,14 +251,13 @@ void GetGyroscopeLowCalibrateParam(Service::Interface* self) {
cmd_buff[1] = RESULT_SUCCESS.raw;
- // currently don't understand the meaning of return value,
- // so stubbed these with value from a real console.
- // TODO(wwylele): implement this correctly
- cmd_buff[2] = 0x19DDFFDC;
- cmd_buff[3] = 0x0002E5DA;
- cmd_buff[4] = 0xE5CE1A2D;
- cmd_buff[5] = 0x19C6FFF3;
- cmd_buff[6] = 0x001CE61E;
+ const s16 param_unit = 6700; // an approximate value taken from hw
+ GyroscopeCalibrateParam param = {
+ { 0, param_unit, -param_unit },
+ { 0, param_unit, -param_unit },
+ { 0, param_unit, -param_unit },
+ };
+ memcpy(&cmd_buff[2], &param, sizeof(param));
LOG_WARNING(Service_HID, "(STUBBED) called");
}
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h
index ebe137525..170d19ea8 100644
--- a/src/core/hle/service/hid/hid.h
+++ b/src/core/hle/service/hid/hid.h
@@ -160,6 +160,18 @@ struct SharedMem {
} gyroscope;
};
+/**
+ * Structure of calibrate params that GetGyroscopeLowCalibrateParam returns
+ */
+struct GyroscopeCalibrateParam {
+ struct {
+ // TODO (wwylele): figure out the exact meaning of these params
+ s16 zero_point;
+ s16 positive_unit_point;
+ s16 negative_unit_point;
+ } x, y, z;
+};
+
// TODO: MSVC does not support using offsetof() on non-static data members even though this
// is technically allowed since C++11. This macro should be enabled once MSVC adds
// support for that.
@@ -284,7 +296,7 @@ void GetGyroscopeLowRawToDpsCoefficient(Service::Interface* self);
* None
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
- * 2~6 : CalibrateParam?
+ * 2~6 (18 bytes) : struct GyroscopeCalibrateParam
*/
void GetGyroscopeLowCalibrateParam(Service::Interface* self);