mirror of
https://github.com/zeldaret/tp
synced 2026-08-11 11:33:29 -04:00
some more wii tests/improvements (#2512)
* some more wii tests/improvements * merge Z2AudioCS changes
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
#ifndef Z2AUDIOCS_H
|
||||
#define Z2AUDIOCS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
class Z2AudioCS {
|
||||
public:
|
||||
static int startLevel(s32 param_1, s32 param_2);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef Z2AUDIOCS_H
|
||||
#define Z2AUDIOCS_H
|
||||
|
||||
#include <revolution/wpad.h>
|
||||
|
||||
class JKRHeap;
|
||||
class JKRArchive;
|
||||
|
||||
class Z2AudioCS {
|
||||
public:
|
||||
void newSpkSoundMemPool();
|
||||
int init(JKRHeap*, JKRArchive*, s32, s32);
|
||||
void update();
|
||||
static void connect(s32);
|
||||
static void disconnect(s32);
|
||||
static void extensionProcess(s32, s32);
|
||||
u32 getHandleSoundID(s32);
|
||||
void start(s32, s32);
|
||||
static void startLevel(s32, s32);
|
||||
};
|
||||
|
||||
#endif /* Z2AUDIOCS_H */
|
||||
@@ -3907,6 +3907,9 @@ public:
|
||||
/* 0x02018 */ daPy_frameCtrl_c mUpperFrameCtrl[3];
|
||||
/* 0x02060 */ mDoExt_MtxCalcOldFrame* field_0x2060;
|
||||
/* 0x02064 */ daAlink_sight_c mSight;
|
||||
#if PLATFORM_WII
|
||||
u8 unk_0x20f0[4];
|
||||
#endif
|
||||
/* 0x020F0 */ daPy_anmHeap_c mAnmHeap3;
|
||||
/* 0x02104 */ daPy_anmHeap_c mAnmHeap4;
|
||||
/* 0x02118 */ daPy_anmHeap_c mFaceBtpHeap;
|
||||
|
||||
@@ -6,17 +6,29 @@
|
||||
|
||||
class dHomeButton_c {
|
||||
public:
|
||||
dHomeButton_c() {
|
||||
field_0x7c = 0;
|
||||
}
|
||||
|
||||
void create_(int, void*);
|
||||
int execute_();
|
||||
void initHomeButtonInfo(int, void*);
|
||||
void initCursorPos();
|
||||
void calcCursorPos();
|
||||
void onReset();
|
||||
void create(int, void*);
|
||||
int execute();
|
||||
void drawCapture(u8, void (*)(J2DOrthoGraph&, void*), void*);
|
||||
|
||||
static void create(int, void*);
|
||||
static int execute();
|
||||
static void drawCapture(u8, void (*)(J2DOrthoGraph&, void*), void*);
|
||||
|
||||
static dHomeButton_c* m_myObj;
|
||||
static u8 lbl_8053A724;
|
||||
static u8 lbl_8053A725;
|
||||
|
||||
/* 0x00 */ HBMDataInfo m_info;
|
||||
/* 0x38 */ HBMControllerData m_controllerData;
|
||||
/* 0x78 */ u32 field_0x78;
|
||||
/* 0x7C */ u8 field_0x7c;
|
||||
};
|
||||
|
||||
#endif /* D_HOME_BUTTON_H */
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "JSystem/JFramework/JFWDisplay.h"
|
||||
#include "dolphin/mtx.h"
|
||||
#include "global.h"
|
||||
|
||||
int mDoGph_Create();
|
||||
void mDoGph_drawFilterQuad(s8 param_0, s8 param_1);
|
||||
@@ -74,14 +75,58 @@ public:
|
||||
static BOOL isAutoForcus() { return data_80450BE7; }
|
||||
static void setTickRate(u32 rate) { JFWDisplay::getManager()->setTickRate(rate); }
|
||||
static void waitBlanking(int wait) { JFWDisplay::getManager()->waitBlanking(wait); }
|
||||
static f32 getWidthF() { return 608.0f; }
|
||||
static f32 getHeightF() { return 448.0f; }
|
||||
|
||||
static f32 getWidthF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_widthF;
|
||||
#else
|
||||
return 608.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getHeightF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_heightF;
|
||||
#else
|
||||
return 448.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getWidth() { return 608.0f; }
|
||||
static f32 getHeight() { return 448.0f; }
|
||||
static f32 getMinYF() { return 0.0f; }
|
||||
static f32 getMinXF() { return 0.0f; }
|
||||
static f32 getMaxYF() { return 448.0f; }
|
||||
static f32 getMaxXF() { return 608.0f; }
|
||||
|
||||
static f32 getMinYF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_minYF;
|
||||
#else
|
||||
return 0.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getMinXF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_minXF;
|
||||
#else
|
||||
return 0.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getMaxYF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_maxYF;
|
||||
#else
|
||||
return 448.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getMaxXF() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return m_maxXF;
|
||||
#else
|
||||
return 608.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
static f32 getAspect() { return 1.3571428f; }
|
||||
static int getMinY() { return 0; }
|
||||
static int getMinX() { return 0; }
|
||||
@@ -105,7 +150,13 @@ public:
|
||||
static void setFrameRate(u16 i_rate) { JFWDisplay::getManager()->setFrameRate(i_rate); }
|
||||
|
||||
// NONMATCHING - Need to define all mDoGph_gInf_c shieldD members
|
||||
static u8 isWide() { return false; }
|
||||
static u8 isWide() {
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
return mWide == TRUE;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static GXTexObj mFrameBufferTexObj;
|
||||
static GXTexObj mZbufferTexObj;
|
||||
@@ -123,6 +174,19 @@ public:
|
||||
static bool mBlureFlag;
|
||||
static u8 mBlureRate;
|
||||
static u8 mFade;
|
||||
|
||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||
static u8 mWide;
|
||||
static ResTIMG* m_fullFrameBufferTimg;
|
||||
static void* m_fullFrameBufferTex;
|
||||
static GXTexObj m_fullFrameBufferTexObj;
|
||||
static f32 m_minXF;
|
||||
static f32 m_minYF;
|
||||
static f32 m_maxXF;
|
||||
static f32 m_maxYF;
|
||||
static f32 m_heightF;
|
||||
static f32 m_widthF;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* M_DO_M_DO_GRAPHIC_H */
|
||||
|
||||
@@ -1,13 +1,186 @@
|
||||
#ifndef M_RE_CONTROLLER_PAD_H
|
||||
#define M_RE_CONTROLLER_PAD_H
|
||||
|
||||
#include <dolphin.h>
|
||||
#include <revolution/mtx.h>
|
||||
#include <revolution/kpad.h>
|
||||
|
||||
class mReCPd {
|
||||
public:
|
||||
struct Pad {
|
||||
struct Acc {};
|
||||
struct Acc {
|
||||
void clean();
|
||||
void changeStts(u32, bool);
|
||||
void calcSwingVec();
|
||||
void calcSttsRem();
|
||||
void calcSttsFs();
|
||||
|
||||
/* 0x000 */ Vec field_0x0[120];
|
||||
/* 0x5A0 */ Vec field_0x5a0[120];
|
||||
/* 0xB40 */ int field_0xb40;
|
||||
/* 0xB44 */ int m_swing;
|
||||
/* 0xB48 */ Vec2 m_swingVec;
|
||||
/* 0xB50 */ u8 field_0xb50;
|
||||
/* 0xB51 */ u8 field_0xb51;
|
||||
/* 0xB54 */ f32 field_0xb54;
|
||||
/* 0xB58 */ u8 field_0xB58[0xB68 - 0xB58];
|
||||
/* 0xB68 */ Mtx field_0xb68;
|
||||
/* 0xB98 */ f32 field_0xb98;
|
||||
/* 0xB9C */ int field_0xb9c;
|
||||
/* 0xBA0 */ f32 field_0xba0;
|
||||
/* 0xBA4 */ f32 field_0xba4;
|
||||
/* 0xBA8 */ u8 field_0xBA8[0xBAC - 0xBA8];
|
||||
/* 0xBAC */ int field_0xbac;
|
||||
/* 0xBB0 */ f32 field_0xbb0;
|
||||
/* 0xBB4 */ f32 field_0xbb4;
|
||||
/* 0xBB8 */ u8 field_0xBB8[0xBBC - 0xBB8];
|
||||
/* 0xBBC */ int field_0xbbc;
|
||||
/* 0xBC0 */ int field_0xbc0;
|
||||
};
|
||||
|
||||
void clean();
|
||||
void cleanOneTime();
|
||||
void copyRemAcc();
|
||||
void copyFSAcc();
|
||||
void cleanTrig();
|
||||
void cleanHold();
|
||||
void cleanRelease();
|
||||
void clearUpDown();
|
||||
void calcDpdBox(Vec2*, Vec2*, f32, f32);
|
||||
void calcDpdOld();
|
||||
void calcDpd2DPos();
|
||||
void calcDpdRatioPos();
|
||||
void calcDpdPlayCirPos();
|
||||
void calcDpdPlayBoxPos();
|
||||
|
||||
/* 0x0000 */ u32 field_0x0;
|
||||
/* 0x0004 */ KPADStatus field_0x4[10];
|
||||
/* 0x0554 */ int field_0x554;
|
||||
/* 0x0558 */ KPADStatus field_0x558;
|
||||
/* 0x05E0 */ Acc m_remAcc;
|
||||
/* 0x11A4 */ Acc m_FSAcc;
|
||||
/* 0x1D68 */ f32 m_stick3D;
|
||||
/* 0x1D6C */ f32 field_0x1d6c;
|
||||
/* 0x1D70 */ f32 m_stickValue;
|
||||
/* 0x1D74 */ s16 m_stickAngle;
|
||||
/* 0x1D76 */ s16 m_stick3DAngle;
|
||||
/* 0x1D78 */ Vec2 field_0x1d78;
|
||||
/* 0x1D80 */ Vec2 field_0x1d80;
|
||||
/* 0x1D88 */ f32 field_0x1d88;
|
||||
/* 0x1D8C */ f32 field_0x1d8c;
|
||||
/* 0x1D90 */ f32 field_0x1d90;
|
||||
/* 0x1D94 */ f32 field_0x1d94;
|
||||
/* 0x1D98 */ f32 field_0x1d98;
|
||||
/* 0x1D9C */ f32 field_0x1d9c;
|
||||
/* 0x1DA0 */ f32 field_0x1da0;
|
||||
/* 0x1DA4 */ f32 field_0x1da4;
|
||||
/* 0x1DA8 */ Vec2 field_0x1da8;
|
||||
/* 0x1DB0 */ Vec2 field_0x1db0;
|
||||
/* 0x1DB8 */ f32 field_0x1db8;
|
||||
/* 0x1DBC */ f32 field_0x1dbc;
|
||||
/* 0x1DC0 */ f32 field_0x1dc0;
|
||||
/* 0x1DC4 */ int field_0x1dc4;
|
||||
/* 0x1DC8 */ int field_0x1dc8;
|
||||
/* 0x1DCC */ int m_swingBlock;
|
||||
/* 0x1DD0 */ int field_0x1dd0;
|
||||
/* 0x1DD4 */ u8 field_0x1dd4;
|
||||
/* 0x1DD8 */ int field_0x1dd8;
|
||||
/* 0x1DDC */ u8 field_0x1ddc;
|
||||
/* 0x1DDD */ u8 field_0x1ddd;
|
||||
/* 0x1DE0 */ int field_0x1de0;
|
||||
/* 0x1DE4 */ int field_0x1de4;
|
||||
/* 0x1DE8 */ u8 field_0x1de8;
|
||||
/* 0x1DEC */ int field_0x1dec;
|
||||
/* 0x1DF0 */ u8 field_0x1df0;
|
||||
/* 0x1DF4 */ int field_0x1df4;
|
||||
/* 0x1DF8 */ u32 field_0x1df8;
|
||||
/* 0x1DFC */ u32 field_0x1dfc;
|
||||
/* 0x1E00 */ int field_0x1e00;
|
||||
/* 0x1E04 */ u8 field_0x1e04;
|
||||
/* 0x1E05 */ u8 field_0x1e05;
|
||||
};
|
||||
|
||||
struct motorWave_t {
|
||||
u8* field_0x0;
|
||||
u16 field_0x4;
|
||||
u16 field_0x6;
|
||||
u8 field_0x8;
|
||||
};
|
||||
|
||||
static void enableDpd(u32);
|
||||
static void disableDpd(u32);
|
||||
static void onConnect(u32);
|
||||
static void setExtensionCallback();
|
||||
static void onGetInfoAsync(u32);
|
||||
static void create();
|
||||
static void startMoterWave(motorWave_t*, u8*, bool);
|
||||
static void startMoterWave(int, u8*, bool);
|
||||
static void stopMoterWave(motorWave_t*);
|
||||
static void stopMoterWave(int);
|
||||
static void updateMoterWave();
|
||||
static void stopMoter();
|
||||
static void getLowBat(u32);
|
||||
static void setLowBat(u32, int);
|
||||
static void onLowBatChk(u32);
|
||||
static void procNoData(u32);
|
||||
static void read();
|
||||
static void calibrateDist(int);
|
||||
static void getDpd2DPos(u32);
|
||||
static void getDpdRatioPos(u32);
|
||||
static void getDpdRatioBoxPos(u32);
|
||||
static void chkDpdOk(u32);
|
||||
static void chkDpdValid(u32);
|
||||
static void chkDpdPosIn(u32);
|
||||
static void getKPADAcc(u32, Vec*, int);
|
||||
static void getAngleXy(u32);
|
||||
static void getAngleZy(u32);
|
||||
static void getKPADAccValue(u32, int);
|
||||
static void getKPADAccValueMax(u32);
|
||||
static void getKPADAccSpeed(u32, int);
|
||||
static void getKPADAccSpeedMax(u32);
|
||||
static void getKPADFsAccValue(u32, int);
|
||||
static void getKPADFsAccValueMax(u32);
|
||||
static s16 getFSStickAngle3DRev(u32);
|
||||
static void calcUnderVec(Pad::Acc*, f32);
|
||||
|
||||
static u32 getHoldB(u32);
|
||||
static u32 getHoldMinus(u32);
|
||||
static u32 getHoldPlus(u32);
|
||||
static u32 getHoldZ1(u32);
|
||||
static u32 getTrigB(u32);
|
||||
static u32 getTrigMinus(u32);
|
||||
static u32 getTrigHome(u32);
|
||||
static u32 getTrigPlus(u32);
|
||||
static u32 getTrigZ1(u32);
|
||||
static u32 chkSwingBlock(u32);
|
||||
static u32 getTrigSwing(u32);
|
||||
static Vec2& getSwingVec(u32);
|
||||
static u32 chkSimpleProbe(u32);
|
||||
static BOOL chkDevTypeValid(u32);
|
||||
static u32 getFSTrigSwing(u32);
|
||||
|
||||
static void plusCalValue();
|
||||
static void minusCalValue();
|
||||
|
||||
// made up, copying concepts from m_Do_controller_pad
|
||||
static WPADInfo& getPadInfo(u32 i_pad) { return m_pad_info[i_pad]; }
|
||||
static Pad& getPad(u32 i_pad) { return m_pad[i_pad]; }
|
||||
static u32 getTrig(u32 i_pad) { return getPad(i_pad).field_0x4[0].trig; }
|
||||
static u32 getHold(u32 i_pad) { return getPad(i_pad).field_0x4[0].hold; }
|
||||
|
||||
static u32 getHoldA(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_A; }
|
||||
static u32 getHoldRight(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_RIGHT; }
|
||||
static u32 getHoldLeft(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_LEFT; }
|
||||
static u32 getHoldUp(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_UP; }
|
||||
static u32 getTrigA(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_A; }
|
||||
static u32 getTrigRight(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_RIGHT; }
|
||||
static u32 getTrigLeft(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_LEFT; }
|
||||
|
||||
static u32 getTrigUp(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_UP; }
|
||||
static u32 getTrigStart(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_PLUS; }
|
||||
|
||||
static WPADInfo m_pad_info[4];
|
||||
static Pad m_pad[4];
|
||||
static int m_cal_value;
|
||||
};
|
||||
|
||||
#endif /* M_RE_CONTROLLER_PAD_H */
|
||||
|
||||
+49
-23
@@ -1,43 +1,69 @@
|
||||
#ifndef _REVOLUTION_HBM_H_
|
||||
#define _REVOLUTION_HBM_H_
|
||||
|
||||
#include <revolution/types.h>
|
||||
#include <revolution/kpad.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
typedef enum HBMSelectBtnNum {
|
||||
HBM_SELECT_NULL = -1,
|
||||
|
||||
// TODO: properly setup later
|
||||
HBM_SELECT_HOMEBTN,
|
||||
HBM_SELECT_BTN1,
|
||||
HBM_SELECT_BTN2,
|
||||
HBM_SELECT_BTN3,
|
||||
HBM_SELECT_BTN4,
|
||||
|
||||
typedef struct Vec2 {
|
||||
f32 x; // size 0x04, offset 0x00
|
||||
f32 y; // size 0x04, offset 0x04
|
||||
} Vec2; // size 0x08
|
||||
HBM_SELECT_MAX
|
||||
} HBMSelectBtnNum;
|
||||
|
||||
// TODO: move this later
|
||||
typedef struct MEMAllocator MEMAllocator;
|
||||
|
||||
typedef int HBMSoundCallback(int evt, int num);
|
||||
|
||||
typedef struct HBMDataInfo {
|
||||
void *layoutBuf; // size 0x04, offset 0x00
|
||||
void *spkSeBuf; // size 0x04, offset 0x04
|
||||
void *msgBuf; // size 0x04, offset 0x08
|
||||
void *configBuf; // size 0x04, offset 0x0c
|
||||
void *mem; // size 0x04, offset 0x10
|
||||
HBMSoundCallback *sound_callback; // size 0x04, offset 0x14
|
||||
int backFlag; // size 0x04, offset 0x18
|
||||
int region; // size 0x04, offset 0x1c
|
||||
int cursor; // size 0x04, offset 0x20
|
||||
u32 memSize; // size 0x04, offset 0x24
|
||||
f32 frameDelta; // size 0x04, offset 0x28
|
||||
Vec2 adjust; // size 0x08, offset 0x2c
|
||||
MEMAllocator *pAllocator; // size 0x04, offset 0x34
|
||||
} HBMDataInfo; // size 0x40
|
||||
/* 0x00 */ void* layoutBuf;
|
||||
/* 0x04 */ void* spkSeBuf;
|
||||
/* 0x08 */ void* msgBuf;
|
||||
/* 0x0C */ void* configBuf;
|
||||
/* 0x10 */ void* mem;
|
||||
/* 0x14 */ HBMSoundCallback* sound_callback;
|
||||
/* 0x18 */ int backFlag;
|
||||
/* 0x1C */ int region;
|
||||
/* 0x20 */ int cursor;
|
||||
/* 0x24 */ u32 memSize;
|
||||
/* 0x28 */ f32 frameDelta;
|
||||
/* 0x2C */ Vec2 adjust;
|
||||
/* 0x34 */ MEMAllocator* pAllocator;
|
||||
} HBMDataInfo; // size 0x38
|
||||
|
||||
void HBMCreate(const HBMDataInfo *pHBInfo);
|
||||
typedef struct HBMKPadData {
|
||||
KPADStatus* kpad;
|
||||
Vec2 pos;
|
||||
u32 use_devtype;
|
||||
} HBMKPadData; // size 0x10
|
||||
|
||||
typedef struct HBMControllerData {
|
||||
HBMKPadData wiiCon[WPAD_MAX_CONTROLLERS];
|
||||
} HBMControllerData; // size 0x40
|
||||
|
||||
void HBMCreate(const HBMDataInfo* pHBInfo);
|
||||
void HBMDelete(void);
|
||||
void HBMInit(void);
|
||||
HBMSelectBtnNum HBMCalc(const HBMControllerData* pController);
|
||||
void HBMDraw(void);
|
||||
HBMSelectBtnNum HBMGetSelectBtnNum(void);
|
||||
void HBMSetAdjustFlag(BOOL flag);
|
||||
void HBMStartBlackOut(void);
|
||||
BOOL HBMIsReassignedControllers(void);
|
||||
|
||||
void HBMCreateSound(void* soundData, void* memBuf, u32 memSize);
|
||||
void HBMDeleteSound(void);
|
||||
void HBMUpdateSound(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _REVOLUTION_HBM_H_
|
||||
#endif // _REVOLUTION_HBM_H_
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
#ifndef _REVOLUTION_KPAD_H_
|
||||
#define _REVOLUTION_KPAD_H_
|
||||
|
||||
#include <revolution/mtx.h>
|
||||
#include <revolution/wpad.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct Vec2 {
|
||||
f32 x, y;
|
||||
} Vec2;
|
||||
|
||||
typedef s32 KPADResult;
|
||||
|
||||
typedef union KPADEXStatus {
|
||||
struct {
|
||||
Vec2 stick;
|
||||
Vec acc;
|
||||
f32 acc_value;
|
||||
f32 acc_speed;
|
||||
} fs; // size 0x1c
|
||||
|
||||
struct {
|
||||
u32 hold;
|
||||
u32 trig;
|
||||
u32 release;
|
||||
Vec2 lstick;
|
||||
Vec2 rstick;
|
||||
f32 ltrigger;
|
||||
f32 rtrigger;
|
||||
} cl; // size 0x24
|
||||
} KPADEXStatus;
|
||||
|
||||
typedef struct KPADStatus {
|
||||
/* 0x00 */ u32 hold;
|
||||
/* 0x04 */ u32 trig;
|
||||
/* 0x08 */ u32 release;
|
||||
/* 0x0C */ Vec acc;
|
||||
/* 0x18 */ f32 acc_value;
|
||||
/* 0x1C */ f32 acc_speed;
|
||||
/* 0x20 */ Vec2 pos;
|
||||
/* 0x28 */ Vec2 vec;
|
||||
/* 0x30 */ f32 speed;
|
||||
/* 0x34 */ Vec2 horizon;
|
||||
/* 0x3C */ Vec2 hori_vec;
|
||||
/* 0x44 */ f32 hori_speed;
|
||||
/* 0x48 */ f32 dist;
|
||||
/* 0x4C */ f32 dist_vec;
|
||||
/* 0x50 */ f32 dist_speed;
|
||||
/* 0x54 */ Vec2 acc_vertical;
|
||||
/* 0x5C */ u8 dev_type;
|
||||
/* 0x5D */ s8 wpad_err;
|
||||
/* 0x5E */ s8 dpd_valid_fg;
|
||||
/* 0x5F */ u8 data_format;
|
||||
/* 0x60 */ KPADEXStatus ex_status;
|
||||
/* 0x84 */ u8 __paddings__[4]; // ??? is this the compiler?
|
||||
} KPADStatus; // size 0x88
|
||||
|
||||
void KPADEnableDPD(s32);
|
||||
void KPADDisableDPD(s32);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _REVOLUTION_KPAD_H_
|
||||
@@ -0,0 +1,383 @@
|
||||
#ifndef _DOLPHIN_MTX_H_
|
||||
#define _DOLPHIN_MTX_H_
|
||||
|
||||
#include <revolution/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct Vec {
|
||||
f32 x, y, z;
|
||||
} Vec, *VecPtr, Point3d, *Point3dPtr;
|
||||
|
||||
typedef struct {
|
||||
s16 x, y, z;
|
||||
} S16Vec, *S16VecPtr;
|
||||
|
||||
typedef struct {
|
||||
f32 x, y, z, w;
|
||||
} Quaternion, *QuaternionPtr, Qtrn, *QtrnPtr;
|
||||
|
||||
typedef f32 Mtx[3][4];
|
||||
typedef f32 (*MtxPtr)[4];
|
||||
|
||||
typedef f32 Mtx44[4][4];
|
||||
typedef f32 (*Mtx44Ptr)[4];
|
||||
|
||||
typedef f32 ROMtx[4][3];
|
||||
typedef f32 (*ROMtxPtr)[4];
|
||||
|
||||
// do these belong in the sdk?
|
||||
typedef f32 Mtx33[3][3];
|
||||
typedef f32 Mtx23[2][3];
|
||||
typedef f32 (*Mtx3P)[3];
|
||||
typedef f32 (*MtxP)[4];
|
||||
typedef const f32 (*CMtxP)[4];
|
||||
typedef f32 QuaternionP[4];
|
||||
|
||||
typedef struct {
|
||||
u32 numMtx;
|
||||
MtxPtr stackBase;
|
||||
MtxPtr stackPtr;
|
||||
} MTXStack;
|
||||
|
||||
#define MTXDegToRad(d) (d * 0.01745329252f)
|
||||
#define MTXRadToDeg(r) (r * 57.29577951f)
|
||||
|
||||
// MTX
|
||||
// C version
|
||||
void C_MTXIdentity(Mtx m);
|
||||
void C_MTXCopy(const Mtx src, Mtx dst);
|
||||
void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab);
|
||||
void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count);
|
||||
void C_MTXTranspose(const Mtx src, Mtx xPose);
|
||||
u32 C_MTXInverse(const Mtx src, Mtx inv);
|
||||
u32 C_MTXInvXpose(const Mtx src, Mtx invX);
|
||||
void C_MTXRotRad(Mtx m, char axis, f32 rad);
|
||||
void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
|
||||
void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad);
|
||||
void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT);
|
||||
void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
|
||||
void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS);
|
||||
void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
|
||||
void C_MTXQuat(Mtx m, const Quaternion* q);
|
||||
void C_MTXReflect(Mtx m, const Vec* p, const Vec* n);
|
||||
|
||||
// PS version
|
||||
void PSMTXIdentity(Mtx m);
|
||||
void PSMTXCopy(const Mtx src, Mtx dst);
|
||||
void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab);
|
||||
void PSMTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count);
|
||||
void PSMTXTranspose(const Mtx src, Mtx xPose);
|
||||
u32 PSMTXInverse(const Mtx src, Mtx inv);
|
||||
u32 PSMTXInvXpose(const Mtx src, Mtx invX);
|
||||
void PSMTXRotRad(Mtx m, char axis, f32 rad);
|
||||
void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
|
||||
void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad);
|
||||
void PSMTXTrans(Mtx m, f32 xT, f32 yT, f32 zT);
|
||||
void PSMTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
|
||||
void PSMTXScale(Mtx m, f32 xS, f32 yS, f32 zS);
|
||||
void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
|
||||
void PSMTXQuat(Mtx m, const Quaternion* q);
|
||||
void PSMTXReflect(Mtx m, const Vec* p, const Vec* n);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define MTXIdentity C_MTXIdentity
|
||||
#define MTXCopy C_MTXCopy
|
||||
#define MTXConcat C_MTXConcat
|
||||
#define MTXInverse C_MTXInverse
|
||||
#define MTXTranspose C_MTXTranspose
|
||||
#define MTXInverse C_MTXInverse
|
||||
#define MTXInvXpose C_MTXInvXpose
|
||||
#define MTXRotRad C_MTXRotRad
|
||||
#define MTXRotTrig C_MTXRotTrig
|
||||
#define MTXRotAxisRad C_MTXRotAxisRad
|
||||
#define MTXTrans C_MTXTrans
|
||||
#define MTXTransApply C_MTXTransApply
|
||||
#define MTXScale C_MTXScale
|
||||
#define MTXScaleApply C_MTXScaleApply
|
||||
#define MTXQuat C_MTXQuat
|
||||
#define MTXReflect C_MTXReflect
|
||||
#else
|
||||
#define MTXIdentity PSMTXIdentity
|
||||
#define MTXCopy PSMTXCopy
|
||||
#define MTXConcat PSMTXConcat
|
||||
#define MTXInverse PSMTXInverse
|
||||
#define MTXTranspose PSMTXTranspose
|
||||
#define MTXInverse PSMTXInverse
|
||||
#define MTXInvXpose PSMTXInvXpose
|
||||
#define MTXRotRad PSMTXRotRad
|
||||
#define MTXRotTrig PSMTXRotTrig
|
||||
#define MTXRotAxisRad PSMTXRotAxisRad
|
||||
#define MTXTrans PSMTXTrans
|
||||
#define MTXTransApply PSMTXTransApply
|
||||
#define MTXScale PSMTXScale
|
||||
#define MTXScaleApply PSMTXScaleApply
|
||||
#define MTXQuat PSMTXQuat
|
||||
#define MTXReflect PSMTXReflect
|
||||
#endif
|
||||
|
||||
// C versions only
|
||||
void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d* target);
|
||||
void C_MTXLightFrustum(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
|
||||
void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
|
||||
void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
|
||||
|
||||
#define MTXLookAt C_MTXLookAt
|
||||
#define MTXLightFrustum C_MTXLightFrustum
|
||||
#define MTXLightPerspective C_MTXLightPerspective
|
||||
#define MTXLightOrtho C_MTXLightOrtho
|
||||
|
||||
// MTXVEC
|
||||
// C versions
|
||||
void C_MTXMultVec(const Mtx m, const Vec* src, Vec* dst);
|
||||
void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void C_MTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
|
||||
void C_MTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
// PS versions
|
||||
void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define MTXMultVec C_MTXMultVec
|
||||
#define MTXMultVecArray C_MTXMultVecArray
|
||||
#define MTXMultVecSR C_MTXMultVecSR
|
||||
#define MTXMultVecArraySR C_MTXMultVecArraySR
|
||||
#else
|
||||
#define MTXMultVec PSMTXMultVec
|
||||
#define MTXMultVecArray PSMTXMultVecArray
|
||||
#define MTXMultVecSR PSMTXMultVecSR
|
||||
#define MTXMultVecArraySR PSMTXMultVecArraySR
|
||||
#endif
|
||||
|
||||
// MTX44
|
||||
// C versions
|
||||
void C_MTX44Identity(Mtx44 m);
|
||||
void C_MTX44Copy(const Mtx44 src, Mtx44 dst);
|
||||
void C_MTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
|
||||
void C_MTX44Transpose(const Mtx44 src, Mtx44 xPose);
|
||||
void C_MTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
|
||||
void C_MTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
|
||||
void C_MTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
|
||||
void C_MTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
|
||||
void C_MTX44RotRad(Mtx44 m, char axis, f32 rad);
|
||||
void C_MTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
|
||||
void C_MTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
|
||||
|
||||
// PS versions
|
||||
void PSMTX44Identity(Mtx44 m);
|
||||
void PSMTX44Copy(const Mtx44 src, Mtx44 dst);
|
||||
void PSMTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
|
||||
void PSMTX44Transpose(const Mtx44 src, Mtx44 xPose);
|
||||
void PSMTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
|
||||
void PSMTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
|
||||
void PSMTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
|
||||
void PSMTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
|
||||
void PSMTX44RotRad(Mtx44 m, char axis, f32 rad);
|
||||
void PSMTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
|
||||
void PSMTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define MTX44Identity C_MTX44Identity
|
||||
#define MTX44Copy C_MTX44Copy
|
||||
#define MTX44Concat C_MTX44Concat
|
||||
#define MTX44Transpose C_MTX44Transpose
|
||||
#define MTX44Trans C_MTX44Trans
|
||||
#define MTX44TransApply C_MTX44TransApply
|
||||
#define MTX44Scale C_MTX44Scale
|
||||
#define MTX44ScaleApply C_MTX44ScaleApply
|
||||
#define MTX44RotRad C_MTX44RotRad
|
||||
#define MTX44RotTrig C_MTX44RotTrig
|
||||
#define MTX44RotAxisRad C_MTX44RotAxisRad
|
||||
#else
|
||||
#define MTX44Identity PSMTX44Identity
|
||||
#define MTX44Copy PSMTX44Copy
|
||||
#define MTX44Concat PSMTX44Concat
|
||||
#define MTX44Transpose PSMTX44Transpose
|
||||
#define MTX44Trans PSMTX44Trans
|
||||
#define MTX44TransApply PSMTX44TransApply
|
||||
#define MTX44Scale PSMTX44Scale
|
||||
#define MTX44ScaleApply PSMTX44ScaleApply
|
||||
#define MTX44RotRad PSMTX44RotRad
|
||||
#define MTX44RotTrig PSMTX44RotTrig
|
||||
#define MTX44RotAxisRad PSMTX44RotAxisRad
|
||||
#endif
|
||||
|
||||
// C versions only
|
||||
void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
|
||||
void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f);
|
||||
void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
|
||||
u32 C_MTX44Inverse(const Mtx44 src, Mtx44 inv);
|
||||
|
||||
#define MTXFrustum C_MTXFrustum
|
||||
#define MTXPerspective C_MTXPerspective
|
||||
#define MTXOrtho C_MTXOrtho
|
||||
#define MTX44Inverse C_MTX44Inverse
|
||||
|
||||
// MTX44VEC
|
||||
// C versions
|
||||
void C_MTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
|
||||
void C_MTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void C_MTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
|
||||
void C_MTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
// PS versions
|
||||
void PSMTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
|
||||
void PSMTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
|
||||
void PSMTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define MTX44MultVec C_MTX44MultVec
|
||||
#define MTX44MultVecArray C_MTX44MultVecArray
|
||||
#define MTX44MultVecSR C_MTX44MultVecSR
|
||||
#define MTX44MultVecArraySR C_MTX44MultVecArraySR
|
||||
#else
|
||||
#define MTX44MultVec PSMTX44MultVec
|
||||
#define MTX44MultVecArray PSMTX44MultVecArray
|
||||
#define MTX44MultVecSR PSMTX44MultVecSR
|
||||
#define MTX44MultVecArraySR PSMTX44MultVecArraySR
|
||||
#endif
|
||||
|
||||
// PSMTX
|
||||
void PSMTXReorder(const Mtx src, ROMtx dest);
|
||||
void PSMTXROMultVecArray(const ROMtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTXROSkin2VecArray(const ROMtx m0, const ROMtx m1, const f32* wtBase, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTXROMultS16VecArray(const Mtx m, const S16Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTXMultS16VecArray(const ROMtx* m, const S16Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
// MTXSTACK
|
||||
void MTXInitStack(MTXStack* sPtr, u32 numMtx);
|
||||
MtxPtr MTXPush(MTXStack* sPtr, const Mtx m);
|
||||
MtxPtr MTXPushFwd(MTXStack* sPtr, const Mtx m);
|
||||
MtxPtr MTXPushInv(MTXStack* sPtr, const Mtx m);
|
||||
MtxPtr MTXPushInvXpose(MTXStack* sPtr, const Mtx m);
|
||||
MtxPtr MTXPop(MTXStack* sPtr);
|
||||
MtxPtr MTXGetStackPtr(const MTXStack* sPtr);
|
||||
|
||||
// VEC
|
||||
// C versions
|
||||
void C_VECAdd(const Vec* a, const Vec* b, Vec* ab);
|
||||
void C_VECSubtract(const Vec* a, const Vec* b, Vec* a_b);
|
||||
void C_VECScale(const Vec* src, Vec* dst, f32 scale);
|
||||
void C_VECNormalize(const Vec* src, Vec* unit);
|
||||
f32 C_VECSquareMag(const Vec* v);
|
||||
f32 C_VECMag(const Vec* v);
|
||||
f32 C_VECDotProduct(const Vec* a, const Vec* b);
|
||||
void C_VECCrossProduct(const Vec* a, const Vec* b, Vec* axb);
|
||||
f32 C_VECSquareDistance(const Vec* a, const Vec* b);
|
||||
f32 C_VECDistance(const Vec* a, const Vec* b);
|
||||
|
||||
// PS versions
|
||||
void PSVECAdd(const Vec* a, const Vec* b, Vec* ab);
|
||||
void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b);
|
||||
void PSVECScale(const Vec* src, Vec* dst, f32 scale);
|
||||
void PSVECNormalize(const Vec* src, Vec* dst);
|
||||
f32 PSVECSquareMag(const Vec* v);
|
||||
f32 PSVECMag(const Vec* v);
|
||||
f32 PSVECDotProduct(const Vec* a, const Vec* b);
|
||||
void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb);
|
||||
f32 PSVECSquareDistance(const Vec* a, const Vec* b);
|
||||
f32 PSVECDistance(const Vec* a, const Vec* b);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define VECAdd C_VECAdd
|
||||
#define VECSubtract C_VECSubtract
|
||||
#define VECScale C_VECScale
|
||||
#define VECNormalize C_VECNormalize
|
||||
#define VECSquareMag C_VECSquareMag
|
||||
#define VECMag C_VECMag
|
||||
#define VECDotProduct C_VECDotProduct
|
||||
#define VECCrossProduct C_VECCrossProduct
|
||||
#define VECSquareDistance C_VECSquareDistance
|
||||
#define VECDistance C_VECDistance
|
||||
#else
|
||||
#define VECAdd PSVECAdd
|
||||
#define VECSubtract PSVECSubtract
|
||||
#define VECScale PSVECScale
|
||||
#define VECNormalize PSVECNormalize
|
||||
#define VECSquareMag PSVECSquareMag
|
||||
#define VECMag PSVECMag
|
||||
#define VECDotProduct PSVECDotProduct
|
||||
#define VECCrossProduct PSVECCrossProduct
|
||||
#define VECSquareDistance PSVECSquareDistance
|
||||
#define VECDistance PSVECDistance
|
||||
#endif
|
||||
|
||||
void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half);
|
||||
void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst);
|
||||
|
||||
#define VECHalfAngle C_VECHalfAngle
|
||||
#define VECReflect C_VECReflect
|
||||
|
||||
// QUAT
|
||||
// C versions
|
||||
void C_QUATAdd(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
void C_QUATSubtract(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
void C_QUATMultiply(const Quaternion* p, const Quaternion* q, Quaternion* pq);
|
||||
void C_QUATScale(const Quaternion* q, Quaternion* r, f32 scale);
|
||||
f32 C_QUATDotProduct(const Quaternion* p, const Quaternion* q);
|
||||
void C_QUATNormalize(const Quaternion* src, Quaternion* unit);
|
||||
void C_QUATInverse(const Quaternion* src, Quaternion* inv);
|
||||
void C_QUATDivide(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
|
||||
// PS versions
|
||||
void PSQUATAdd(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
void PSQUATSubtract(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
void PSQUATMultiply(const Quaternion* p, const Quaternion* q, Quaternion* pq);
|
||||
void PSQUATScale(const Quaternion* q, Quaternion* r, f32 scale);
|
||||
f32 PSQUATDotProduct(const Quaternion* p, const Quaternion* q);
|
||||
void PSQUATNormalize(const Quaternion* src, Quaternion* unit);
|
||||
void PSQUATInverse(const Quaternion* src, Quaternion* inv);
|
||||
void PSQUATDivide(const Quaternion* p, const Quaternion* q, Quaternion* r);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define QUATAdd C_QUATAdd
|
||||
#define QUATSubtract C_QUATSubtract
|
||||
#define QUATMultiply C_QUATMultiply
|
||||
#define QUATScale C_QUATScale
|
||||
#define QUATDotProduct C_QUATDotProduct
|
||||
#define QUATNormalize C_QUATNormalize
|
||||
#define QUATInverse C_QUATInverse
|
||||
#define QUATDivide C_QUATDivide
|
||||
#else
|
||||
#define QUATAdd PSQUATAdd
|
||||
#define QUATSubtract PSQUATSubtract
|
||||
#define QUATMultiply PSQUATMultiply
|
||||
#define QUATScale PSQUATScale
|
||||
#define QUATDotProduct PSQUATDotProduct
|
||||
#define QUATNormalize PSQUATNormalize
|
||||
#define QUATInverse PSQUATInverse
|
||||
#define QUATDivide PSQUATDivide
|
||||
#endif
|
||||
|
||||
// C versions only
|
||||
void C_QUATExp(const Quaternion* q, Quaternion* r);
|
||||
void C_QUATLogN(const Quaternion* q, Quaternion* r);
|
||||
void C_QUATMakeClosest(const Quaternion* q, const Quaternion* qto, Quaternion* r);
|
||||
void C_QUATRotAxisRad(Quaternion* r, const Vec* axis, f32 rad);
|
||||
void C_QUATMtx(Quaternion* r, const Mtx m);
|
||||
void C_QUATLerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t);
|
||||
void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t);
|
||||
void C_QUATSquad(const Quaternion* p, const Quaternion* a, const Quaternion* b, const Quaternion* q, Quaternion* r, f32 t);
|
||||
void C_QUATCompA(const Quaternion* qprev, const Quaternion* q, const Quaternion* qnext, Quaternion* a);
|
||||
|
||||
#define QUATExp C_QUATExp
|
||||
#define QUATLogN C_QUATLogN
|
||||
#define QUATMakeClosest C_QUATMakeClosest
|
||||
#define QUATRotAxisRad C_QUATRotAxisRad
|
||||
#define QUATMtx C_QUATMtx
|
||||
#define QUATLerp C_QUATLerp
|
||||
#define QUATSlerp C_QUATSlerp
|
||||
#define QUATSquad C_QUATSquad
|
||||
#define QUATCompA C_QUATCompA
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
#ifndef _REVOLUTION_WPAD_H_
|
||||
#define _REVOLUTION_WPAD_H_
|
||||
|
||||
#include <revolution/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define WPAD_BUTTON_LEFT 0x0001
|
||||
#define WPAD_BUTTON_RIGHT 0x0002
|
||||
#define WPAD_BUTTON_DOWN 0x0004
|
||||
#define WPAD_BUTTON_UP 0x0008
|
||||
#define WPAD_BUTTON_PLUS 0x0010
|
||||
#define WPAD_BUTTON_2 0x0100
|
||||
#define WPAD_BUTTON_1 0x0200
|
||||
#define WPAD_BUTTON_B 0x0400
|
||||
#define WPAD_BUTTON_A 0x0800
|
||||
#define WPAD_BUTTON_MINUS 0x1000
|
||||
#define WPAD_BUTTON_Z 0x2000
|
||||
#define WPAD_BUTTON_C 0x4000
|
||||
#define WPAD_BUTTON_HOME 0x8000
|
||||
|
||||
typedef s32 WPADResult;
|
||||
typedef s32 WPADChannel;
|
||||
typedef u32 WPADDeviceType;
|
||||
|
||||
typedef void WPADExtensionCallback(WPADChannel chan, s32 devType);
|
||||
|
||||
// for ease of use in for loops
|
||||
enum WPADChannel_et {
|
||||
WPAD_CHAN0,
|
||||
WPAD_CHAN1,
|
||||
WPAD_CHAN2,
|
||||
WPAD_CHAN3,
|
||||
|
||||
WPAD_MAX_CONTROLLERS,
|
||||
WPAD_CHAN_INVALID = -1,
|
||||
};
|
||||
|
||||
typedef struct WPADInfo {
|
||||
/* 0x00 */ BOOL dpd;
|
||||
/* 0x04 */ BOOL speaker;
|
||||
/* 0x08 */ BOOL attach;
|
||||
/* 0x0C */ BOOL lowBat;
|
||||
/* 0x10 */ BOOL nearempty;
|
||||
/* 0x14 */ u8 battery;
|
||||
/* 0x15 */ u8 led;
|
||||
/* 0x16 */ u8 protocol;
|
||||
/* 0x17 */ u8 firmware;
|
||||
} WPADInfo; // size 0x18
|
||||
|
||||
WPADResult WPADProbe(WPADChannel chan, WPADDeviceType* devType);
|
||||
|
||||
WPADExtensionCallback* WPADSetExtensionCallback(WPADChannel chan, WPADExtensionCallback* cb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _REVOLUTION_WPAD_H_
|
||||
Reference in New Issue
Block a user