From b698ea376df75527477ac9aa125bf78b72e77876 Mon Sep 17 00:00:00 2001 From: John Peterson Date: Wed, 12 Nov 2008 15:03:21 +0000 Subject: Fixed emulated Wiimote again. Improved keyboard/gamepad controls for Wario Land. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1151 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/Common.h | 4 +++- Source/Core/Core/Src/Core.cpp | 6 +++--- Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp | 12 ++++++------ Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp | 6 +++--- Source/Core/Core/Src/LogManager.cpp | 10 ++++++++++ Source/Core/DebuggerWX/Src/MemoryWindow.cpp | 12 ++++++++---- 6 files changed, 33 insertions(+), 17 deletions(-) (limited to 'Source/Core') diff --git a/Source/Core/Common/Src/Common.h b/Source/Core/Common/Src/Common.h index e6c9c57de5..7dd078f354 100644 --- a/Source/Core/Common/Src/Common.h +++ b/Source/Core/Common/Src/Common.h @@ -186,6 +186,7 @@ bool PanicYesNo(const char* text, ...); bool AskYesNo(const char* text, ...); extern void __Log(int logNumber, const char* text, ...); +extern void __Logv(int log, int v, const char *format, ...); // dummy class @@ -237,7 +238,8 @@ void Host_UpdateLogDisplay(); #ifdef LOGGING #define LOG(t, ...) __Log(LogTypes::t, __VA_ARGS__); -#define LOGV(t,v, ...) __Log(LogTypes::t + v*100, __VA_ARGS__); +//#define LOGV(t,v, ...) __Log(LogTypes::t + v*100, __VA_ARGS__); +#define LOGV(t,v, ...) __Logv(LogTypes::t, v, __VA_ARGS__); #define _dbg_assert_(_t_, _a_) \ if (!(_a_)){\ diff --git a/Source/Core/Core/Src/Core.cpp b/Source/Core/Core/Src/Core.cpp index c79d2fdca2..6479827e2b 100644 --- a/Source/Core/Core/Src/Core.cpp +++ b/Source/Core/Core/Src/Core.cpp @@ -76,7 +76,7 @@ void Callback_DSPLog(const TCHAR* _szMessage); char * Callback_ISOName(void); void Callback_DSPInterrupt(); void Callback_PADLog(const TCHAR* _szMessage); -void Callback_WiimoteLog(const TCHAR* _szMessage); +void Callback_WiimoteLog(const TCHAR* _szMessage, int _v); void Callback_WiimoteInput(u16 _channelID, const void* _pData, u32 _Size); // For keyboard shortcuts. @@ -590,9 +590,9 @@ void Callback_KeyPress(int key, BOOL shift, BOOL control) // __________________________________________________________________________________________________ // Callback_WiimoteLog // -void Callback_WiimoteLog(const TCHAR* _szMessage) +void Callback_WiimoteLog(const TCHAR* _szMessage, int _v) { - LOG(WII_IPC_WIIMOTE, _szMessage); + LOGV(WII_IPC_WIIMOTE, _v, _szMessage); } } // end of namespace Core diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp index e1c85202d0..00c6a7225c 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp @@ -161,7 +161,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress) delete m_pACLBuffer; m_pACLBuffer = new SIOCtlVBuffer(_CommandAddress); - LOG(WII_IPC_WIIMOTE, "ACL_DATA_ENDPOINT: 0x%08x ", _CommandAddress); + LOGV(WII_IPC_WIIMOTE, 2, "ACL_DATA_ENDPOINT: 0x%08x ", _CommandAddress); return false; } break; @@ -237,7 +237,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::SendToDevice(u16 _ConnectionHandle, u8 void CWII_IPC_HLE_Device_usb_oh1_57e_305::SendACLFrame(u16 _ConnectionHandle, u8* _pData, u32 _Size) { - LOG(WII_IPC_WIIMOTE, "Queing ACL frame."); + LOGV(WII_IPC_WIIMOTE, 1, "Queing ACL frame."); //queue the packet ACLFrame frame; @@ -283,7 +283,7 @@ u32 CWII_IPC_HLE_Device_usb_oh1_57e_305::Update() { ACLFrame& frame = m_AclFrameQue.front(); - LOG(WII_IPC_WIIMOTE, "Sending ACL frame."); + LOGV(WII_IPC_WIIMOTE, 1, "Sending ACL frame."); UACLHeader* pHeader = (UACLHeader*)Memory::GetPointer(m_pACLBuffer->PayloadBuffer[0].m_Address); pHeader->ConnectionHandle = frame.ConnectionHandle; pHeader->BCFlag = 0; @@ -788,9 +788,9 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventNumberOfCompletedPackets(u16 AddEventToQueue(Event); // Log - LOG(WII_IPC_WIIMOTE, "Event: SendEventNumberOfCompletedPackets"); - LOG(WII_IPC_WIIMOTE, " Connection_Handle: 0x%04x", pNumberOfCompletedPackets->Connection_Handle); - LOG(WII_IPC_WIIMOTE, " Number_Of_Completed_Packets: %i", pNumberOfCompletedPackets->Number_Of_Completed_Packets); + LOGV(WII_IPC_WIIMOTE, 1, "Event: SendEventNumberOfCompletedPackets"); + LOGV(WII_IPC_WIIMOTE, 1, " Connection_Handle: 0x%04x", pNumberOfCompletedPackets->Connection_Handle); + LOGV(WII_IPC_WIIMOTE, 1, " Number_Of_Completed_Packets: %i", pNumberOfCompletedPackets->Number_Of_Completed_Packets); return true; } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp index 86a4079b61..a8d9c514be 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp @@ -320,7 +320,7 @@ void CWII_IPC_HLE_WiiMote::SendACLFrame(u8* _pData, u32 _Size) u8* pData = _pData + sizeof(SL2CAP_Header); u32 DataSize = _Size - sizeof(SL2CAP_Header); - LOG(WII_IPC_WIIMOTE, "L2Cap-SendFrame: Channel 0x%04x, Len 0x%x, DataSize 0x%x", + LOGV(WII_IPC_WIIMOTE, 2, "L2Cap-SendFrame: Channel 0x%04x, Len 0x%x, DataSize 0x%x", pHeader->CID, pHeader->Length, DataSize); if(pHeader->Length != DataSize) @@ -941,7 +941,7 @@ namespace Core void Callback_WiimoteInput(u16 _channelID, const void* _pData, u32 _Size) { const u8* pData = (const u8*)_pData; - LOG(WII_IPC_WIIMOTE, "Callback_WiimoteInput: 0x%x", _channelID); + LOGV(WII_IPC_WIIMOTE, 2, "Callback_WiimoteInput: 0x%x", _channelID); std::string Temp; for (u32 j=0; j<_Size; j++) { @@ -949,7 +949,7 @@ namespace Core sprintf(Buffer, "%02x ", pData[j]); Temp.append(Buffer); } - LOG(WII_IPC_WIIMOTE, " Data: %s", Temp.c_str()); + LOGV(WII_IPC_WIIMOTE, 3, " Data: %s", Temp.c_str()); s_Usb->m_WiiMotes[0].SendL2capData(_channelID, _pData, _Size); } diff --git a/Source/Core/Core/Src/LogManager.cpp b/Source/Core/Core/Src/LogManager.cpp index d8a9e5d1cc..a535f16467 100644 --- a/Source/Core/Core/Src/LogManager.cpp +++ b/Source/Core/Core/Src/LogManager.cpp @@ -45,6 +45,16 @@ void __Log(int log, const char *format, ...) LogManager::Log((LogTypes::LOG_TYPE)log, temp); } +void __Logv(int log, int v, const char *format, ...) +{ + char* temp = (char*)alloca(strlen(format)+512); + va_list args; + va_start(args, format); + CharArrayFromFormatV(temp, 512, format, args); + va_end(args); + LogManager::Log((LogTypes::LOG_TYPE)(log + v*100), temp); +} + CDebugger_Log::CDebugger_Log(const char* _szShortName, const char* _szName, int a) : m_bLogToFile(true), // write to file or not m_bShowInLog(false), diff --git a/Source/Core/DebuggerWX/Src/MemoryWindow.cpp b/Source/Core/DebuggerWX/Src/MemoryWindow.cpp index e7a02ca518..2ae39b249e 100644 --- a/Source/Core/DebuggerWX/Src/MemoryWindow.cpp +++ b/Source/Core/DebuggerWX/Src/MemoryWindow.cpp @@ -109,10 +109,14 @@ CMemoryWindow::~CMemoryWindow() void CMemoryWindow::Save(IniFile& _IniFile) const { - _IniFile.Set("MemoryWindow", "x", GetPosition().x); - _IniFile.Set("MemoryWindow", "y", GetPosition().y); - _IniFile.Set("MemoryWindow", "w", GetSize().GetWidth()); - _IniFile.Set("MemoryWindow", "h", GetSize().GetHeight()); + // Prevent these bad values that can happen after a crash or hanging + if(GetPosition().x != -32000 && GetPosition().y != -32000) + { + _IniFile.Set("MemoryWindow", "x", GetPosition().x); + _IniFile.Set("MemoryWindow", "y", GetPosition().y); + _IniFile.Set("MemoryWindow", "w", GetSize().GetWidth()); + _IniFile.Set("MemoryWindow", "h", GetSize().GetHeight()); + } } -- cgit v1.2.3