Added direct GameCube controller commands to the Serial Interface emulation. Fixes the controls in MaxPlay Classic Games Volume 1 and the Action Replay disc.

This commit is contained in:
skidau 2013-03-02 22:35:10 +11:00
parent 5bb6ac8164
commit 643f18d28b
3 changed files with 17 additions and 3 deletions

View File

@ -3,8 +3,8 @@
#Values set here will override the main dolphin settings. #Values set here will override the main dolphin settings.
[EmuState] [EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set. #The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 1 EmulationStateId = 4
EmulationIssues = EmulationIssues = Enable the GameCube BIOS to allow the game to boot.
[OnFrame] [OnFrame]
+$Nop Hack +$Nop Hack
0x80025BA0:dword:0x60000000 0x80025BA0:dword:0x60000000

View File

@ -69,6 +69,19 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
*(u32*)&_pBuffer[0] = SI_GC_CONTROLLER; *(u32*)&_pBuffer[0] = SI_GC_CONTROLLER;
break; break;
case CMD_DIRECT:
{
INFO_LOG(SERIALINTERFACE, "PAD - Direct (Length: %d)", _iLength);
u32 high, low;
GetData(high, low);
for (int i = 0; i < (_iLength - 1) / 2; i++)
{
_pBuffer[0 + i] = (high >> (i * 8)) & 0xff;
_pBuffer[4 + i] = (low >> (i * 8)) & 0xff;
}
}
break;
case CMD_ORIGIN: case CMD_ORIGIN:
{ {
INFO_LOG(SERIALINTERFACE, "PAD - Get Origin"); INFO_LOG(SERIALINTERFACE, "PAD - Get Origin");
@ -96,7 +109,7 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
default: default:
{ {
ERROR_LOG(SERIALINTERFACE, "unknown SI command (0x%x)", command); ERROR_LOG(SERIALINTERFACE, "unknown SI command (0x%x)", command);
PanicAlert("SI: Unknown command"); PanicAlert("SI: Unknown command (0x%x)", command);
} }
break; break;
} }

View File

@ -31,6 +31,7 @@ private:
enum EBufferCommands enum EBufferCommands
{ {
CMD_RESET = 0x00, CMD_RESET = 0x00,
CMD_DIRECT = 0x40,
CMD_ORIGIN = 0x41, CMD_ORIGIN = 0x41,
CMD_RECALIBRATE = 0x42, CMD_RECALIBRATE = 0x42,
}; };