Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Allow disabling memory card writes in netplay.
Fixes issue 6217.
  • Loading branch information
John Chadwick authored and RachelBryk committed Apr 7, 2013
1 parent 5f32feb commit c7abf7e
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 2 deletions.
3 changes: 2 additions & 1 deletion Source/Core/Core/Src/CoreParameter.cpp
Expand Up @@ -46,7 +46,7 @@ SCoreStartupParameter::SCoreStartupParameter()
bCPUThread(true), bDSPThread(false), bDSPHLE(true),
bSkipIdle(true), bNTSC(false), bForceNTSCJ(false),
bHLE_BS2(true), bEnableCheats(false),
bMergeBlocks(false),
bMergeBlocks(false), bEnableMemcardSaving(true),
bDPL2Decoder(false), iLatency(14),
bRunCompareServer(false), bRunCompareClient(false),
bMMU(false), bDCBZOFF(false), iTLBHack(0), bVBeam(false),
Expand Down Expand Up @@ -81,6 +81,7 @@ void SCoreStartupParameter::LoadDefaults()
bSyncGPU = false;
bFastDiscSpeed = false;
bMergeBlocks = false;
bEnableMemcardSaving = true;
SelectedLanguage = 0;
bWii = false;
bDPL2Decoder = false;
Expand Down
1 change: 1 addition & 0 deletions Source/Core/Core/Src/CoreParameter.h
Expand Up @@ -105,6 +105,7 @@ struct SCoreStartupParameter
bool bHLE_BS2;
bool bEnableCheats;
bool bMergeBlocks;
bool bEnableMemcardSaving;

bool bDPL2Decoder;
int iLatency;
Expand Down
3 changes: 3 additions & 0 deletions Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp
Expand Up @@ -150,6 +150,9 @@ void CEXIMemoryCard::Flush(bool exiting)
if(!m_bDirty)
return;

if (!Core::g_CoreStartupParameter.bEnableMemcardSaving)
return;

if (flushThread.joinable())
{
flushThread.join();
Expand Down
10 changes: 10 additions & 0 deletions Source/Core/Core/Src/NetPlay.cpp
Expand Up @@ -271,6 +271,16 @@ bool NetPlay::StopGame()
return true;
}

void NetPlay::SetMemcardWriteEnabled(bool enabled)
{
std::lock_guard<std::recursive_mutex> lkg(m_crit.game);

if (m_is_running)
{
Core::g_CoreStartupParameter.bEnableMemcardSaving = enabled;
}
}

// called from ---CPU--- thread
u8 NetPlay::GetPadNum(u8 numPAD)
{
Expand Down
1 change: 1 addition & 0 deletions Source/Core/Core/Src/NetPlay.h
Expand Up @@ -111,6 +111,7 @@ class NetPlay
virtual bool StartGame(const std::string &path);
virtual bool StopGame();

virtual void SetMemcardWriteEnabled(bool enabled);
//void PushPadStates(unsigned int count);

u8 GetPadNum(u8 numPAD);
Expand Down
13 changes: 12 additions & 1 deletion Source/Core/DolphinWX/Src/NetWindow.cpp
Expand Up @@ -22,6 +22,7 @@
#include "NetPlay.h"
#include "NetWindow.h"
#include "Frame.h"
#include "Core.h"

#include <sstream>
#include <string>
Expand Down Expand Up @@ -333,8 +334,11 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
padbuf_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnPadBuffHelp, this);
bottom_szr->Add(padbuf_spin, 0, wxCENTER);
bottom_szr->Add(padbuf_btn);
m_memcard_write = new wxCheckBox(panel, wxID_ANY, _("Write memcards (GC)"));
m_memcard_write->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &NetPlayDiag::OnMemcardWriteCheck, this);
bottom_szr->Add(m_memcard_write, 0, wxCENTER);
}

bottom_szr->AddStretchSpacer(1);
bottom_szr->Add(quit_btn);

Expand Down Expand Up @@ -397,6 +401,8 @@ void NetPlayDiag::OnStop(wxCommandEvent&)
void NetPlayDiag::BootGame(const std::string& filename)
{
main_frame->BootGame(filename);

Core::g_CoreStartupParameter.bEnableMemcardSaving = m_memcard_write->GetValue();
}

void NetPlayDiag::StopGame()
Expand Down Expand Up @@ -449,6 +455,11 @@ void NetPlayDiag::OnPadBuffHelp(wxCommandEvent&)
m_chat_text->AppendText(StrToWxStr(ss.str()));
}

void NetPlayDiag::OnMemcardWriteCheck(wxCommandEvent &event)
{
netplay_ptr->SetMemcardWriteEnabled(m_memcard_write->GetValue());
}

void NetPlayDiag::OnAdjustBuffer(wxCommandEvent& event)
{
const int val = ((wxSpinCtrl*)event.GetEventObject())->GetValue();
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/DolphinWX/Src/NetWindow.h
Expand Up @@ -96,6 +96,7 @@ class NetPlayDiag : public wxFrame, public NetPlayUI
void OnChat(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnPadBuffHelp(wxCommandEvent& event);
void OnMemcardWriteCheck(wxCommandEvent& event);
void OnThread(wxCommandEvent& event);
void OnChangeGame(wxCommandEvent& event);
void OnAdjustBuffer(wxCommandEvent& event);
Expand All @@ -104,6 +105,7 @@ class NetPlayDiag : public wxFrame, public NetPlayUI
wxListBox* m_player_lbox;
wxTextCtrl* m_chat_text;
wxTextCtrl* m_chat_msg_text;
wxCheckBox* m_memcard_write;

std::string m_selected_game;
wxButton* m_game_btn;
Expand Down

0 comments on commit c7abf7e

Please sign in to comment.