pokeplatinum/include/touch_pad.h
2026-04-19 13:52:22 -07:00

38 lines
1.4 KiB
C

#ifndef POKEPLATINUM_TOUCH_PAD_H
#define POKEPLATINUM_TOUCH_PAD_H
#include <nitro.h>
#define MAX_TOUCH_BUFFER_SIZE 8
typedef struct TouchPadDataBuffer {
u16 bufferSize;
TPData buffer[MAX_TOUCH_BUFFER_SIZE];
} TouchPadDataBuffer;
enum TouchPadExternalBufferWriteMethod {
TOUCH_PAD_EXTERNAL_BUFFER_WRITE_METHOD_ONLY_TOUCHES_WITH_WRAPPING = 1,
TOUCH_PAD_EXTERNAL_BUFFER_WRITE_METHOD_NO_WRITE,
TOUCH_PAD_EXTERNAL_BUFFER_WRITE_METHOD_ONLY_TOUCHES_WITHOUT_WRAPPING,
TOUCH_PAD_EXTERNAL_BUFFER_WRITE_METHOD_ALL_DATA_WITHOUT_WRAPPING,
TOUCH_PAD_EXTERNAL_BUFFER_WRITE_METHOD_ALL_DATA_WITH_WRAPPING,
};
enum AutoSamplingOperationResult {
AUTO_SAMPLING_OPERATION_RESULT_BUFFER_INDEX_OUT_OF_RANGE = -1,
AUTO_SAMPLING_OPERATION_RESULT_SUCCESS = 1,
AUTO_SAMPLING_OPERATION_RESULT_FAILURE,
AUTO_SAMPLING_OPERATION_RESULT_NO_DATA_WRITTEN,
};
void EnableTouchPad(void);
BOOL InitializeTouchPadWithExternalBuffer(TPData *externalBuffer, u32 externalBufferSize, u32 autoSamplingFrequency);
BOOL InitializeTouchPad(u32 autoSamplingFrequency);
u32 DisableTouchPad(void);
u32 WriteAutoSamplingDataToBuffer(TouchPadDataBuffer *outBuffer, enum TouchPadExternalBufferWriteMethod externalBufferWriteMethod, u32 changeThreshold);
void ConvertTouchPadDataToScreenSpace(TPData *touchPadDataBuffer, u32 touchPadDataBufferSize);
void AfterSleep(void);
void BeforeSleep(void);
#endif // POKEPLATINUM_TOUCH_PAD_H