diff --git a/Source/Core/Common/Src/Common.h b/Source/Core/Common/Src/Common.h index 42ace78ded..43ca8d25e1 100644 --- a/Source/Core/Common/Src/Common.h +++ b/Source/Core/Common/Src/Common.h @@ -49,6 +49,11 @@ #endif #ifdef _WIN32 +#ifdef _WIN32 +#define fseek _fseeki64 +#define ftell _ftelli64 +#endif + #define POSIX 0 #define NOMINMAX diff --git a/Source/Core/DebuggerWX/Src/LogWindow.cpp b/Source/Core/DebuggerWX/Src/LogWindow.cpp index b329192de9..7e23dbf19b 100644 --- a/Source/Core/DebuggerWX/Src/LogWindow.cpp +++ b/Source/Core/DebuggerWX/Src/LogWindow.cpp @@ -110,6 +110,8 @@ void CLogWindow::OnClear(wxCommandEvent& event) void CLogWindow::OnEnableAll(wxCommandEvent& event) { + if (!LogManager::m_Log[0]) + return; static bool enable = true; IniFile ini; ini.Load("Dolphin.ini"); diff --git a/Source/Core/DiscIO/Src/CompressedBlob.cpp b/Source/Core/DiscIO/Src/CompressedBlob.cpp index 41194b537f..c0863a82bc 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.cpp +++ b/Source/Core/DiscIO/Src/CompressedBlob.cpp @@ -26,6 +26,7 @@ #include "Common.h" #include "CompressedBlob.h" +#include "FileUtil.h" #include "Hash.h" #ifdef _WIN32 @@ -35,11 +36,6 @@ #include "../../../../Externals/zlib/zlib.h" #endif -#ifdef _WIN32 -#define fseek _fseeki64 -#endif - - namespace DiscIO { @@ -163,6 +159,11 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr) bool CompressFileToBlob(const char* infile, const char* outfile, u32 sub_type, int block_size, CompressCB callback, void* arg) { + if (File::GetSize(infile) > 2000000000ULL) { + PanicAlert("Sorry - compressing Wii games not yet supported."); + return false; + } + if (IsCompressedBlob(infile)) { PanicAlert("%s is already compressed! Cannot compress it further.", infile); diff --git a/Source/Core/DiscIO/Src/FileSystemGCWii.cpp b/Source/Core/DiscIO/Src/FileSystemGCWii.cpp index 276a12fc8c..c728767fd5 100644 --- a/Source/Core/DiscIO/Src/FileSystemGCWii.cpp +++ b/Source/Core/DiscIO/Src/FileSystemGCWii.cpp @@ -137,6 +137,7 @@ size_t CFileSystemGCWii::GetFileList(std::vector &_rFilenames if (_rFilenames.size()) PanicAlert("GetFileList : input list has contents?"); _rFilenames.clear(); + _rFilenames.reserve(m_FileInfoVector.size()); for (size_t i = 0; i < m_FileInfoVector.size(); i++) _rFilenames.push_back(&m_FileInfoVector[i]); return m_FileInfoVector.size(); @@ -182,9 +183,11 @@ bool CFileSystemGCWii::InitFileSystem() if (Root.IsDirectory()) { - m_FileInfoVector.clear(); + if (m_FileInfoVector.size()) + PanicAlert("Wtf?"); u64 NameTableOffset = FSTOffset; + m_FileInfoVector.reserve(Root.m_FileSize); for (u32 i = 0; i < Root.m_FileSize; i++) { SFileInfo sfi; @@ -194,7 +197,6 @@ bool CFileSystemGCWii::InitFileSystem() sfi.m_FileSize = Read32(Offset + 0x8); m_FileInfoVector.push_back(sfi); - NameTableOffset += 0xC; } diff --git a/Source/Core/DiscIO/Src/VolumeCreator.cpp b/Source/Core/DiscIO/Src/VolumeCreator.cpp index 7f58f30db7..7cf08ab664 100644 --- a/Source/Core/DiscIO/Src/VolumeCreator.cpp +++ b/Source/Core/DiscIO/Src/VolumeCreator.cpp @@ -79,7 +79,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename) { case DISC_TYPE_WII: case DISC_TYPE_GC: - return(new CVolumeGC(pReader)); + return new CVolumeGC(pReader); case DISC_TYPE_WII_CONTAINER: { @@ -106,7 +106,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename) IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii) { - if(CVolumeDirectory::IsValidDirectory(_rDirectory)) + if (CVolumeDirectory::IsValidDirectory(_rDirectory)) return new CVolumeDirectory(_rDirectory, _bIsWii); return NULL; diff --git a/Source/Core/DiscIO/Src/VolumeDirectory.cpp b/Source/Core/DiscIO/Src/VolumeDirectory.cpp index a6af0bdca7..1d609266ec 100644 --- a/Source/Core/DiscIO/Src/VolumeDirectory.cpp +++ b/Source/Core/DiscIO/Src/VolumeDirectory.cpp @@ -421,7 +421,7 @@ void CVolumeDirectory::WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u m_virtualDisk.insert(make_pair(dataOffset, entry.physicalName)); // 4 byte aligned - dataOffset = (dataOffset + entry.size + 3) & ~3; + dataOffset = (dataOffset + entry.size + 3) & ~3ULL; } } diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.h b/Source/Core/DolphinWX/Src/GameListCtrl.h index 8ebfc178e6..2b579625b3 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.h +++ b/Source/Core/DolphinWX/Src/GameListCtrl.h @@ -26,63 +26,63 @@ class CGameListCtrl : public wxListCtrl { - public: +public: - CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style); - ~CGameListCtrl(); + CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style); + ~CGameListCtrl(); - void Update(); - void BrowseForDirectory(); - const GameListItem *GetSelectedISO() const; - const GameListItem *GetISO(int index) const; + void Update(); + void BrowseForDirectory(); + const GameListItem *GetSelectedISO() const; + const GameListItem *GetISO(int index) const; - enum - { - COLUMN_BANNER = 0, - COLUMN_TITLE, - COLUMN_COMPANY, - COLUMN_NOTES, - COLUMN_COUNTRY, - COLUMN_SIZE, - COLUMN_EMULATION_STATE, - NUMBER_OF_COLUMN - }; + enum + { + COLUMN_BANNER = 0, + COLUMN_TITLE, + COLUMN_COMPANY, + COLUMN_NOTES, + COLUMN_COUNTRY, + COLUMN_SIZE, + COLUMN_EMULATION_STATE, + NUMBER_OF_COLUMN + }; - private: +private: - std::vector m_FlagImageIndex; - std::vector m_ISOFiles; + std::vector m_FlagImageIndex; + std::vector m_ISOFiles; - int last_column; - int last_sort; + int last_column; + int last_sort; - void InitBitmaps(); - void InsertItemInReportView(long _Index); - void SetBackgroundColor(); - void ScanForISOs(); + void InitBitmaps(); + void InsertItemInReportView(long _Index); + void SetBackgroundColor(); + void ScanForISOs(); - DECLARE_EVENT_TABLE() + DECLARE_EVENT_TABLE() - // events - void OnRightClick(wxMouseEvent& event); - void OnColumnClick(wxListEvent& event); - void OnColBeginDrag(wxListEvent& event); - void OnColEndDrag(wxListEvent& event); - void OnSelected(wxListEvent& event); - void OnActivated(wxListEvent& event); - void OnSize(wxSizeEvent& event); - void OnEditPatchFile(wxCommandEvent& event); - void OnOpenContainingFolder(wxCommandEvent& event); - void OnSetDefaultGCM(wxCommandEvent& event); - void OnDeleteGCM(wxCommandEvent& event); - void OnCompressGCM(wxCommandEvent& event); - void OnFilesystemViewer(wxCommandEvent& event); + // events + void OnRightClick(wxMouseEvent& event); + void OnColumnClick(wxListEvent& event); + void OnColBeginDrag(wxListEvent& event); + void OnColEndDrag(wxListEvent& event); + void OnSelected(wxListEvent& event); + void OnActivated(wxListEvent& event); + void OnSize(wxSizeEvent& event); + void OnEditPatchFile(wxCommandEvent& event); + void OnOpenContainingFolder(wxCommandEvent& event); + void OnSetDefaultGCM(wxCommandEvent& event); + void OnDeleteGCM(wxCommandEvent& event); + void OnCompressGCM(wxCommandEvent& event); + void OnFilesystemViewer(wxCommandEvent& event); - virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem); + virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem); - void AutomaticColumnWidth(); + void AutomaticColumnWidth(); - static void CompressCB(const char* text, float percent, void* arg); + static void CompressCB(const char* text, float percent, void* arg); }; diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index 1fd8c3d8dc..af97bd29f9 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -18,7 +18,8 @@ #include #include #ifdef WIN32 - #include "svnrev.h" +#include +#include "svnrev.h" #endif #include "CPUDetect.h" #include "Globals.h" @@ -69,6 +70,13 @@ LONG WINAPI MyUnhandledExceptionFilter(LPEXCEPTION_POINTERS e) { bool DolphinApp::OnInit() { DetectCPU(); + +#ifdef _DEBUG + int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); + tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF; + _CrtSetDbgFlag(tmpflag); +#endif + #ifndef _WIN32 // RegisterPanicAlertHandler(&wxPanicAlert); #endif diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.cpp index 1687202e8a..e999a34d19 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.cpp @@ -42,9 +42,7 @@ CDSPHandler::~CDSPHandler() void CDSPHandler::Update() { if (m_pUCode != NULL) - { m_pUCode->Update(); - } } unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value) @@ -64,32 +62,29 @@ unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value) } m_DSPControl.Hex = Temp.Hex; - - return(m_DSPControl.Hex); + return m_DSPControl.Hex; } unsigned short CDSPHandler::ReadControlRegister() { - return(m_DSPControl.Hex); + return m_DSPControl.Hex; } void CDSPHandler::SendMailToDSP(u32 _uMail) { if (m_pUCode != NULL) - { m_pUCode->HandleMail(_uMail); - } } IUCode* CDSPHandler::GetUCode() { - return(m_pUCode); + return m_pUCode; } void CDSPHandler::SetUCode(u32 _crc) { delete m_pUCode; - + m_pUCode = NULL; m_MailHandler.Clear(); m_pUCode = UCodeFactory(_crc, m_MailHandler); } diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.h b/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.h index e183a75649..1b5030b129 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.h +++ b/Source/Plugins/Plugin_DSP_HLE/Src/DSPHandler.h @@ -32,11 +32,11 @@ public: IUCode* GetUCode(); void SetUCode(u32 _crc); - CMailHandler& AccessMailHandler() {return(m_MailHandler);} + CMailHandler& AccessMailHandler() { return m_MailHandler; } static CDSPHandler& GetInstance() { - return(*m_pInstance); + return *m_pInstance; } static void Destroy() @@ -48,11 +48,9 @@ public: static CDSPHandler& CreateInstance() { if (!m_pInstance) - { m_pInstance = new CDSPHandler(); - } - return(*m_pInstance); + return *m_pInstance; } private: diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/MailHandler.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/MailHandler.cpp index 2cb4685b56..2119351e14 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/MailHandler.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/MailHandler.cpp @@ -18,7 +18,9 @@ #include "MailHandler.h" CMailHandler::CMailHandler() -{} +{ + +} CMailHandler::~CMailHandler() { @@ -38,13 +40,11 @@ u16 CMailHandler::ReadDSPMailboxHigh() if (!m_Mails.empty()) { u16 result = (m_Mails.front() >> 16) & 0xFFFF; - Update(); - - return(result); + return result; } - return(0x00); + return 0x00; } u16 CMailHandler::ReadDSPMailboxLow() @@ -60,20 +60,18 @@ u16 CMailHandler::ReadDSPMailboxLow() return(result); } - return(0x00); + return 0x00; } void CMailHandler::Clear() { while (!m_Mails.empty()) - { m_Mails.pop(); - } } bool CMailHandler::IsEmpty() { - return(m_Mails.empty()); + return m_Mails.empty(); } void CMailHandler::Halt(bool _Halt) diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.cpp index c7a223e519..68734d669c 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.cpp @@ -29,10 +29,13 @@ CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler) : IUCode(_rMailHandler) , m_numSteps(0) , m_bListInProgress(false) + , m_step(0) + , m_readOffset(0) { DebugLog("UCode_Zelda - add boot mails for handshake"); m_rMailHandler.PushMail(DSP_INIT); m_rMailHandler.PushMail(0x80000000); // handshake + memset(m_Buffer, 0, sizeof(m_Buffer)); } @@ -46,9 +49,7 @@ void CUCode_Zelda::Update() { // check if we have to sent something if (!m_rMailHandler.IsEmpty()) - { g_dspInitialize.pGenerateDSPInterrupt(); - } } @@ -62,6 +63,8 @@ void CUCode_Zelda::HandleMail(u32 _uMail) } else { + if (m_step < 0 || m_step >= sizeof(m_Buffer)/4) + PanicAlert("m_step out of range"); ((u32*)m_Buffer)[m_step] = _uMail; m_step++; diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.h b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.h index e9168fd52e..e2c4d87cdf 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.h +++ b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda.h @@ -45,21 +45,21 @@ private: u8 Read8() { - return(m_Buffer[m_readOffset++]); + return m_Buffer[m_readOffset++]; } u16 Read16() { u16 res = *(u16*)&m_Buffer[m_readOffset]; m_readOffset += 2; - return(res); + return res; } u32 Read32() { u32 res = *(u32*)&m_Buffer[m_readOffset]; m_readOffset += 4; - return(res); + return res; } public: diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.cpp index 508bd648c0..28cfaeca52 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.cpp @@ -32,20 +32,20 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler) switch (_CRC) { case UCODE_ROM: - return(new CUCode_Rom(_rMailHandler)); + return new CUCode_Rom(_rMailHandler); case UCODE_INIT_AUDIO_SYSTEM: - return(new CUCode_InitAudioSystem(_rMailHandler)); + return new CUCode_InitAudioSystem(_rMailHandler); case 0x65d6cc6f: // CARD - return(new CUCode_CARD(_rMailHandler)); + return new CUCode_CARD(_rMailHandler); case 0x088e38a5: // IPL - JAP case 0xd73338cf: // IPL case 0x42f64ac4: // Luigi (after fix) case 0x4be6a5cb: // AC, Pikmin (after fix) DebugLog("JAC ucode chosen"); - return(new CUCode_Jac(_rMailHandler)); + return new CUCode_Jac(_rMailHandler); case 0x3ad3b7ac: // Naruto3 case 0x3daf59b9: // Alien Hominid @@ -57,31 +57,31 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler) // Zelda:OOT, Tony hawk, viewtiful joe case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080 DebugLog("AX ucode chosen, yay!"); - return(new CUCode_AX(_rMailHandler)); + return new CUCode_AX(_rMailHandler); case 0x6CA33A6D: // DK Jungle Beat case 0x86840740: // zelda case 0x56d36052: // mario case 0x2fcdf1ec: // mariokart, zelda 4 swords DebugLog("Zelda ucode chosen"); - return(new CUCode_Zelda(_rMailHandler)); + return new CUCode_Zelda(_rMailHandler); // WII CRCs case 0x6c3f6f94: // zelda - PAL case 0xd643001f: // mario galaxy - PAL DebugLog("Zelda Wii ucode chosen"); - return(new CUCode_Zelda(_rMailHandler)); + return new CUCode_Zelda(_rMailHandler); case 0x347112ba: // raving rabbits DebugLog("Wii - AX chosen"); - return(new CUCode_AX(_rMailHandler, true)); + return new CUCode_AX(_rMailHandler, true); default: PanicAlert("Unknown ucode (CRC = %08x) - forcing AX", _CRC); - return(new CUCode_AX(_rMailHandler)); + return new CUCode_AX(_rMailHandler); } - return(NULL); + return NULL; } diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.h b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.h index f7c2787e49..b7da4d0b6e 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.h +++ b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCodes.h @@ -24,6 +24,7 @@ #define UCODE_INIT_AUDIO_SYSTEM 0x0000001 class CMailHandler; + class IUCode { public: diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp index bd197420af..4120beb64d 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp @@ -132,6 +132,12 @@ void DSP_Initialize(DSPInitialize _dspInitialize) CDSPHandler::CreateInstance(); #ifdef _WIN32 +#ifdef _DEBUG + int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); + tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF; + _CrtSetDbgFlag(tmpflag); +#endif + DSound::DSound_StartSound((HWND)g_dspInitialize.hWnd, 48000, Mixer); #else AOSound::AOSound_StartSound(48000, Mixer); @@ -157,11 +163,11 @@ unsigned short DSP_ReadMailboxHigh(bool _CPUMailbox) { if (_CPUMailbox) { - return((g_dspState.CPUMailbox >> 16) & 0xFFFF); + return (g_dspState.CPUMailbox >> 16) & 0xFFFF; } else { - return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh()); + return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh(); } } @@ -169,11 +175,11 @@ unsigned short DSP_ReadMailboxLow(bool _CPUMailbox) { if (_CPUMailbox) { - return(g_dspState.CPUMailbox & 0xFFFF); + return g_dspState.CPUMailbox & 0xFFFF; } else { - return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow()); + return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow(); } } @@ -249,5 +255,4 @@ void DSP_SendAIBuffer(unsigned int address, int sample_rate) if ((counter & 255) == 0) DSound::DSound_UpdateSound(); #endif - } diff --git a/Source/Plugins/Plugin_PadDX9/Src/MultiDI.cpp b/Source/Plugins/Plugin_PadDX9/Src/MultiDI.cpp index a45124f10a..574abe606e 100644 --- a/Source/Plugins/Plugin_PadDX9/Src/MultiDI.cpp +++ b/Source/Plugins/Plugin_PadDX9/Src/MultiDI.cpp @@ -7,11 +7,10 @@ // // Copyright (C) Microsoft Corporation. All Rights Reserved. //----------------------------------------------------------------------------- -#define STRICT -#define DIRECTINPUT_VERSION 0x0800 - #include "stdafx.h" +#define DIRECTINPUT_VERSION 0x0800 + #include #include #include @@ -21,9 +20,6 @@ #include "MultiDI.h" #include - - - //----------------------------------------------------------------------------- // Name: CMultiplayerInputDeviceManager // Desc: Constructor diff --git a/Source/Plugins/Plugin_Wiimote_Test/Src/Wiimote_Test.cpp b/Source/Plugins/Plugin_Wiimote_Test/Src/Wiimote_Test.cpp index 38fc6c687c..b5eee4936e 100644 --- a/Source/Plugins/Plugin_Wiimote_Test/Src/Wiimote_Test.cpp +++ b/Source/Plugins/Plugin_Wiimote_Test/Src/Wiimote_Test.cpp @@ -303,8 +303,8 @@ void SendReportCoreAccelIr12() { RECT screenRect; POINT point; - _dbg_assert_(WIIMOTE, GetClipCursor(&screenRect)); - _dbg_assert_(WIIMOTE, GetCursorPos(&point)); + GetClipCursor(&screenRect); + GetCursorPos(&point); y0 = y1 = (point.y * (screenRect.bottom - screenRect.top)) / (BOTTOM - TOP); int x = (point.x * (screenRect.right - screenRect.left)) / (RIGHT - LEFT); x0 = x - SENSOR_BAR_RADIUS;