Changes

1,918 bytes added ,  17:55, 4 July 2017
Filled VPADData (https://github.com/Maschell/dynamic_libs/pull/11/commits/bd0862328bf4f6adf1600418098d0bfae001a37d)
Line 6: Line 6:  
!Prototype
 
!Prototype
 
!Description
 
!Description
 +
|-
 +
|VPADGetLcdMode
 +
|int VPADGetLcdMode(int padnum, VPADDisplayMode *lcdmode);
 +
|Gets LCD mode of gamepad and stores it in ''lcdmode''
 +
|-
 +
|VPADSetLcdMode
 +
|int VPADSetLcdMode(int padnum, VPADDisplayMode lcdmode);
 +
|Sets LCD mode of gamepad based on ''lcdmode''
 
|-
 
|-
 
|VPADRead
 
|VPADRead
|int VPADRead(int padnum, void *buffer, int length, int *err);
+
|int VPADRead(int padnum, VPADData *buffer, int num_datasets, int *err);
 
|Stores raw controller data in ''buffer'' for the specified Gamepad
 
|Stores raw controller data in ''buffer'' for the specified Gamepad
 +
|-
 +
|VPADShutdown
 +
|void VPADShutdown(void);
 +
|A deprecated function that was supposed to shut down the Gamepad.
 
|}
 
|}
   −
==Structures==
+
==Structures/Enums==
 +
===VPAD Display Mode===
 +
Can be gotten using VPADGetLcdMode().
 +
 
 +
<syntaxhighlight lang="C">
 +
typedef enum {
 +
    DISPLAY_MODE_STANDBY = 0,      /* This is probably the mode you can set as a user in HOME - Turn display off */
 +
    DISPLAY_MODE_OFF = 1,                /* This turns off the display completely, the gamepad can be used as a pure input controller */
 +
    DISPLAY_MODE_DEFAULT  = 0xFF /* Default mode */
 +
} VPADDisplayMode;
 +
</syntaxhighlight>
 +
 
 
===VPAD Data===
 
===VPAD Data===
Can be gotten using VPADRead(), length seems to control the max amount of "datasets" to keep. A single dataset containing raw controller data is 0xAC bytes.
+
Can be gotten using VPADRead(), num_datasets seems to control the max amount of "datasets" to keep. A single dataset containing raw controller data is 0xAC bytes. The first three words of a datset are bitmasks of the flags listed [[vpad.rpl#Buttons|below]].
    
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
 +
typedef struct
 +
{
 +
    float x, y;
 +
} Vec2D;
 +
 +
typedef struct
 +
{
 +
    float x, y, z;
 +
} Vec3D;
 +
 
typedef struct
 
typedef struct
 
{
 
{
Line 26: Line 59:  
typedef struct
 
typedef struct
 
{
 
{
     char unknown0[0x2 - 0x0];
+
     Vec3D X,Y,Z;
     uint16_t buttons;           /* Bitmask of button flags below */
+
} VPADOrientation;
     char unknown4[0xc - 0x4];
+
 
 +
typedef struct
 +
{
 +
     uint32_t btn_hold;          /* Held buttons */
 +
    uint32_t btn_trigger;       /* Buttons that are pressed at that instant */
 +
     uint32_t btn_release;       /* Released buttons */
 
     Vec2D lstick, rstick;        /* Each contains 4-byte X and Y components */
 
     Vec2D lstick, rstick;        /* Each contains 4-byte X and Y components */
     char unknown1c[0x52 - 0x1c];
+
     Vec3D acc;                   /* Accelerometer value */
 +
    f32 accValue;                /* Accelerometer magnitude */
 +
    f32 accSpeed;                /* Accelerometer variation */
 +
    Vec2D accVertical;          /* Vertical direction of DRC */
 +
    Vec3D gyro;                  /* Gyro data */
 +
    Vec3D angle;                /* Angle data */
 +
    s8 vpadErr;                  /* Error status */
 
     VPADTPData tpdata;          /* Normal touchscreen data */
 
     VPADTPData tpdata;          /* Normal touchscreen data */
 
     VPADTPData tpdata1;          /* Modified touchscreen data 1 */
 
     VPADTPData tpdata1;          /* Modified touchscreen data 1 */
 
     VPADTPData tpdata2;          /* Modified touchscreen data 2 */
 
     VPADTPData tpdata2;          /* Modified touchscreen data 2 */
     char unknown6a[0xa0 - 0x6a];
+
     VPADOrientation dir;        /* Orientation in three-dimensional space */
     uint8_t volume;
+
    BOOL headphoneStatus;       /* Headphone status (TRUE : headphones are inserted) */
     uint8_t battery;            /* 0 to 6 */
+
    Vec3D magnet;                /* Magnetometer value */
     uint8_t unk_volume;         /* One less than volume */
+
     u8 volume;                   /* Slide Volume value (0 - 255) */
     char unknowna4[0xac - 0xa4];
+
     u8 batteryLevel;            /* Battery level ( 0 - 6 ) */
 +
     u8 micStatus;               /* Mic status */
 +
    u8 volumeCalibrated;        /* One less than volume */
 +
     u8 __paddings__[7];
 
} VPADData;
 
} VPADData;
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 61: Line 108:  
#define BUTTON_HOME    0x0002
 
#define BUTTON_HOME    0x0002
 
#define BUTTON_SYNC    0x0001
 
#define BUTTON_SYNC    0x0001
 +
#define BUTTON_STICK_R    0x00020000
 +
#define BUTTON_STICK_L    0x00040000
 +
#define BUTTON_TV          0x00010000
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
12

edits