#include "stdafx.h" #include "Emu/System.h" #include "Emu/ARMv7/PSVFuncList.h" #include "sceTouch.h" extern psv_log_base sceSystemGesture; enum SceSystemGestureTouchState : s32 { SCE_SYSTEM_GESTURE_TOUCH_STATE_INACTIVE = 0, SCE_SYSTEM_GESTURE_TOUCH_STATE_BEGIN = 1, SCE_SYSTEM_GESTURE_TOUCH_STATE_ACTIVE = 2, SCE_SYSTEM_GESTURE_TOUCH_STATE_END = 3 }; enum SceSystemGestureType : s32 { SCE_SYSTEM_GESTURE_TYPE_TAP = 1, SCE_SYSTEM_GESTURE_TYPE_DRAG = 2, SCE_SYSTEM_GESTURE_TYPE_TAP_AND_HOLD = 4, SCE_SYSTEM_GESTURE_TYPE_PINCH_OUT_IN = 8 }; struct SceSystemGestureVector2 { s16 x; s16 y; }; struct SceSystemGestureRectangle { s16 x; s16 y; s16 width; s16 height; }; struct SceSystemGesturePrimitiveTouchEvent { SceSystemGestureTouchState eventState; u16 primitiveID; SceSystemGestureVector2 pressedPosition; s16 pressedForce; SceSystemGestureVector2 currentPosition; s16 currentForce; SceSystemGestureVector2 deltaVector; s16 deltaForce; u64 deltaTime; u64 elapsedTime; u8 reserved[56]; }; struct SceSystemGesturePrimitiveTouchRecognizerParameter { u8 reserved[64]; }; struct SceSystemGestureTouchRecognizer { u64 reserved[307]; }; struct SceSystemGestureTouchRecognizerInformation { SceSystemGestureType gestureType; u32 touchPanelPortID; SceSystemGestureRectangle rectangle; u64 updatedTime; u8 reserved[256]; }; struct SceSystemGestureTapRecognizerParameter { u8 maxTapCount; u8 reserved[63]; }; struct SceSystemGestureDragRecognizerParameter { u8 reserved[64]; }; struct SceSystemGestureTapAndHoldRecognizerParameter { u64 timeToInvokeEvent; u8 reserved[56]; }; struct SceSystemGesturePinchOutInRecognizerParameter { u8 reserved[64]; }; union SceSystemGestureTouchRecognizerParameter { u8 parameterBuf[64]; SceSystemGestureTapRecognizerParameter tap; SceSystemGestureDragRecognizerParameter drag; SceSystemGestureTapAndHoldRecognizerParameter tapAndHold; SceSystemGesturePinchOutInRecognizerParameter pinchOutIn; }; struct SceSystemGestureTapEventProperty { u16 primitiveID; SceSystemGestureVector2 position; u8 tappedCount; u8 reserved[57]; }; struct SceSystemGestureDragEventProperty { u16 primitiveID; SceSystemGestureVector2 deltaVector; SceSystemGestureVector2 currentPosition; SceSystemGestureVector2 pressedPosition; u8 reserved[50]; }; struct SceSystemGestureTapAndHoldEventProperty { u16 primitiveID; SceSystemGestureVector2 pressedPosition; u8 reserved[58]; }; struct SceSystemGesturePinchOutInEventProperty { float scale; struct { u16 primitiveID; SceSystemGestureVector2 currentPosition; SceSystemGestureVector2 deltaVector; SceSystemGestureVector2 pairedPosition; } primitive[2]; u8 reserved[32]; }; struct SceSystemGestureTouchEvent { u32 eventID; SceSystemGestureTouchState eventState; SceSystemGestureType gestureType; u8 padding[4]; u64 updatedTime; union { u8 propertyBuf[64]; SceSystemGestureTapEventProperty tap; SceSystemGestureDragEventProperty drag; SceSystemGestureTapAndHoldEventProperty tapAndHold; SceSystemGesturePinchOutInEventProperty pinchOutIn; } property; u8 reserved[56]; }; s32 sceSystemGestureInitializePrimitiveTouchRecognizer(vm::psv::ptr parameter) { throw __FUNCTION__; } s32 sceSystemGestureFinalizePrimitiveTouchRecognizer() { throw __FUNCTION__; } s32 sceSystemGestureResetPrimitiveTouchRecognizer() { throw __FUNCTION__; } s32 sceSystemGestureUpdatePrimitiveTouchRecognizer(vm::psv::ptr pFrontData, vm::psv::ptr pBackData) { throw __FUNCTION__; } s32 sceSystemGestureGetPrimitiveTouchEvents(vm::psv::ptr primitiveEventBuffer, const u32 capacityOfBuffer, vm::psv::ptr numberOfEvent) { throw __FUNCTION__; } s32 sceSystemGestureGetPrimitiveTouchEventsCount() { throw __FUNCTION__; } s32 sceSystemGestureGetPrimitiveTouchEventByIndex(const u32 index, vm::psv::ptr primitiveTouchEvent) { throw __FUNCTION__; } s32 sceSystemGestureGetPrimitiveTouchEventByPrimitiveID(const u16 primitiveID, vm::psv::ptr primitiveTouchEvent) { throw __FUNCTION__; } s32 sceSystemGestureCreateTouchRecognizer(vm::psv::ptr touchRecognizer, const SceSystemGestureType gestureType, const u8 touchPanelPortID, vm::psv::ptr rectangle, vm::psv::ptr touchRecognizerParameter) { throw __FUNCTION__; } s32 sceSystemGestureGetTouchRecognizerInformation(vm::psv::ptr touchRecognizer, vm::psv::ptr information) { throw __FUNCTION__; } s32 sceSystemGestureResetTouchRecognizer(vm::psv::ptr touchRecognizer) { throw __FUNCTION__; } s32 sceSystemGestureUpdateTouchRecognizer(vm::psv::ptr touchRecognizer) { throw __FUNCTION__; } s32 sceSystemGestureUpdateTouchRecognizerRectangle(vm::psv::ptr touchRecognizer, vm::psv::ptr rectangle) { throw __FUNCTION__; } s32 sceSystemGestureGetTouchEvents(vm::psv::ptr touchRecognizer, vm::psv::ptr eventBuffer, const u32 capacityOfBuffer, vm::psv::ptr numberOfEvent) { throw __FUNCTION__; } s32 sceSystemGestureGetTouchEventsCount(vm::psv::ptr touchRecognizer) { throw __FUNCTION__; } s32 sceSystemGestureGetTouchEventByIndex(vm::psv::ptr touchRecognizer, const u32 index, vm::psv::ptr touchEvent) { throw __FUNCTION__; } s32 sceSystemGestureGetTouchEventByEventID(vm::psv::ptr touchRecognizer, const u32 eventID, vm::psv::ptr touchEvent) { throw __FUNCTION__; } #define REG_FUNC(nid, name) reg_psv_func(nid, &sceSystemGesture, #name, name) psv_log_base sceSystemGesture("SceSystemGesture", []() { sceSystemGesture.on_load = nullptr; sceSystemGesture.on_unload = nullptr; sceSystemGesture.on_stop = nullptr; REG_FUNC(0x6078A08B, sceSystemGestureInitializePrimitiveTouchRecognizer); REG_FUNC(0xFD5A6504, sceSystemGestureResetPrimitiveTouchRecognizer); REG_FUNC(0xB3875104, sceSystemGestureFinalizePrimitiveTouchRecognizer); REG_FUNC(0xDF4C665A, sceSystemGestureUpdatePrimitiveTouchRecognizer); REG_FUNC(0xC750D3DA, sceSystemGestureGetPrimitiveTouchEvents); REG_FUNC(0xBAB8ECCB, sceSystemGestureGetPrimitiveTouchEventsCount); REG_FUNC(0xE0577765, sceSystemGestureGetPrimitiveTouchEventByIndex); REG_FUNC(0x480564C9, sceSystemGestureGetPrimitiveTouchEventByPrimitiveID); REG_FUNC(0xC3367370, sceSystemGestureCreateTouchRecognizer); REG_FUNC(0xF0DB1AE5, sceSystemGestureGetTouchRecognizerInformation); REG_FUNC(0x0D941B90, sceSystemGestureResetTouchRecognizer); REG_FUNC(0x851FB144, sceSystemGestureUpdateTouchRecognizer); REG_FUNC(0xA9DB29F6, sceSystemGestureUpdateTouchRecognizerRectangle); REG_FUNC(0x789D867C, sceSystemGestureGetTouchEvents); REG_FUNC(0x13AD2218, sceSystemGestureGetTouchEventsCount); REG_FUNC(0x74724147, sceSystemGestureGetTouchEventByIndex); REG_FUNC(0x5570B83E, sceSystemGestureGetTouchEventByEventID); });