mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
just some more comments for SI :)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2515 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
5586c964bb
commit
2726a2acb9
@ -123,16 +123,16 @@ union USIPoll
|
||||
u32 Hex;
|
||||
struct
|
||||
{
|
||||
unsigned VBCPY3 : 1;
|
||||
unsigned VBCPY3 : 1; // 1: write to output buffer only on vblank
|
||||
unsigned VBCPY2 : 1;
|
||||
unsigned VBCPY1 : 1;
|
||||
unsigned VBCPY0 : 1;
|
||||
unsigned EN3 : 1;
|
||||
unsigned EN2 : 1;
|
||||
unsigned EN3 : 1; // Enable polling of channel
|
||||
unsigned EN2 : 1; // does not affect communication RAM transfers
|
||||
unsigned EN1 : 1;
|
||||
unsigned EN0 : 1;
|
||||
unsigned Y : 10;
|
||||
unsigned X : 10;
|
||||
unsigned Y : 10; // Polls per frame
|
||||
unsigned X : 10; // Polls per X lines. begins at vsync, min 7, max depends on video mode
|
||||
unsigned : 6;
|
||||
};
|
||||
};
|
||||
@ -143,13 +143,17 @@ union USIComCSR
|
||||
u32 Hex;
|
||||
struct
|
||||
{
|
||||
unsigned TSTART : 1;
|
||||
unsigned CHANNEL : 2; // determines which SI channel will be used the communication interface.
|
||||
unsigned : 5;
|
||||
unsigned TSTART : 1; // write: start transfer read: transfer status
|
||||
unsigned CHANNEL : 2; // determines which SI channel will be used on the communication interface.
|
||||
unsigned : 3;
|
||||
unsigned CALLBEN : 1; // Callback enable
|
||||
unsigned CMDEN : 1; // Command enable?
|
||||
unsigned INLNGTH : 7;
|
||||
unsigned : 1;
|
||||
unsigned OUTLNGTH : 7; // Communication Channel Output Length in bytes
|
||||
unsigned : 4;
|
||||
unsigned : 1;
|
||||
unsigned CHANEN : 1; // Channel enable?
|
||||
unsigned CHANNUM : 2; // Channel number?
|
||||
unsigned RDSTINTMSK : 1; // Read Status Interrupt Status Mask
|
||||
unsigned RDSTINT : 1; // Read Status Interrupt Status
|
||||
unsigned COMERR : 1; // Communication Error (set 0)
|
||||
@ -206,7 +210,7 @@ union USIEXIClockCount
|
||||
u32 Hex;
|
||||
struct
|
||||
{
|
||||
unsigned LOCK : 1;
|
||||
unsigned LOCK : 1; // 1: prevents CPU from setting EXI clock to 32MHz
|
||||
unsigned : 30;
|
||||
};
|
||||
};
|
||||
|
@ -52,6 +52,7 @@ int ISIDevice::RunBuffer(u8* _pBuffer, int _iLength)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Just a dummy that logs reads and writes
|
||||
// to be used for SI devices we haven't emulated
|
||||
// and hopefully as an "emtpy" device
|
||||
class CSIDevice_Dummy : public ISIDevice
|
||||
{
|
||||
public:
|
||||
|
@ -34,12 +34,16 @@ CSIDevice_GCController::CSIDevice_GCController(int _iDeviceNumber) :
|
||||
{
|
||||
memset(&m_origin, 0, sizeof(SOrigin));
|
||||
|
||||
m_origin.uCommand = 0x41;
|
||||
m_origin.uOriginStickX = 0x80;
|
||||
// Resetting to origin is a function of the controller itself
|
||||
// press X+Y+Start for three seconds to trigger a reset
|
||||
// probably this is meant to read current pad status and use it as
|
||||
// the origin, but we just use these:
|
||||
m_origin.uCommand = CMD_ORIGIN;
|
||||
m_origin.uOriginStickX = 0x80; // center
|
||||
m_origin.uOriginStickY = 0x80;
|
||||
m_origin.uSubStickStickX = 0x80;
|
||||
m_origin.uSubStickStickY = 0x80;
|
||||
m_origin.uTrigger_L = 0x1F;
|
||||
m_origin.uTrigger_L = 0x1F; // 0-30 is the lower deadzone
|
||||
m_origin.uTrigger_R = 0x1F;
|
||||
}
|
||||
|
||||
@ -60,7 +64,7 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
|
||||
{
|
||||
case CMD_RESET:
|
||||
{
|
||||
*(u32*)&_pBuffer[0] = SI_GC_CONTROLLER; // | SI_GC_NOMOTOR;
|
||||
*(u32*)&_pBuffer[0] = SI_GC_CONTROLLER;
|
||||
iPosition = _iLength; // Break the while loop
|
||||
}
|
||||
break;
|
||||
@ -126,7 +130,7 @@ CSIDevice_GCController::GetData(u32& _Hi, u32& _Low)
|
||||
|
||||
_Hi = (u32)((u8)PadStatus.stickY);
|
||||
_Hi |= (u32)((u8)PadStatus.stickX << 8);
|
||||
_Hi |= (u32)((u16)PadStatus.button << 16); // Dunno were/if we should set any of the top 3bits...
|
||||
_Hi |= (u32)((u16)PadStatus.button << 16);
|
||||
_Hi |= 0x00800000; // F|RES: means that the pad must be "combined" with the origin to math the "final" OSPad-Struct
|
||||
//_Hi |= 0x20000000; // ?
|
||||
|
||||
|
@ -37,14 +37,14 @@ private:
|
||||
|
||||
struct SOrigin
|
||||
{
|
||||
u8 uCommand;
|
||||
u8 unk_1;
|
||||
u8 uCommand;// Maybe should be button bits?
|
||||
u8 unk_1; // ..and this would be the other half
|
||||
u8 uOriginStickX;
|
||||
u8 uOriginStickY;
|
||||
u8 uSubStickStickX; // ???
|
||||
u8 uSubStickStickY; // ???
|
||||
u8 uTrigger_L; // ???
|
||||
u8 uTrigger_R; // ???
|
||||
u8 uSubStickStickX;
|
||||
u8 uSubStickStickY;
|
||||
u8 uTrigger_L;
|
||||
u8 uTrigger_R;
|
||||
u8 unk_4;
|
||||
u8 unk_5;
|
||||
u8 unk_6;
|
||||
|
Loading…
Reference in New Issue
Block a user