namespace-ified ActionReplay, and made ISOProperties use the existing AR code. bonus: encrypted arcodes are saved as unencrypted codes just by closing the isoproperties dialog. also added ARCodeAddEdit, but once again, it only views entries atm. some misc wxw cleanup
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1560 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
1e774a5db2
commit
4a5d9ded94
|
@ -602,10 +602,6 @@
|
||||||
RelativePath=".\Src\Plugin.h"
|
RelativePath=".\Src\Plugin.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Src\PortableSockets.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Src\SConscript"
|
RelativePath=".\Src\SConscript"
|
||||||
>
|
>
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
#include "ARDecrypt.h"
|
#include "ARDecrypt.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
namespace ActionReplay
|
||||||
|
{
|
||||||
|
|
||||||
int total;
|
int total;
|
||||||
|
|
||||||
// Alphanumeric filter for text<->bin conversion
|
// Alphanumeric filter for text<->bin conversion
|
||||||
|
@ -509,3 +512,4 @@ void DecryptARCode(std::vector<std::string> vCodes, std::vector<AREntry> &ops)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} //namespace ActionReplay
|
||||||
|
|
|
@ -28,9 +28,13 @@
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "ActionReplay.h"
|
#include "ActionReplay.h"
|
||||||
|
|
||||||
|
namespace ActionReplay
|
||||||
|
{
|
||||||
|
|
||||||
extern int total;
|
extern int total;
|
||||||
extern const char *filter;
|
extern const char *filter;
|
||||||
|
|
||||||
void DecryptARCode(std::vector<std::string> vCodes, std::vector<AREntry> &ops);
|
void DecryptARCode(std::vector<std::string> vCodes, std::vector<AREntry> &ops);
|
||||||
|
} //namespace
|
||||||
|
|
||||||
#endif //_ARDECRYPT_H_
|
#endif //_ARDECRYPT_H_
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
// It probably is Turing complete - but what does that matter when AR codes can write
|
// It probably is Turing complete - but what does that matter when AR codes can write
|
||||||
// actual PowerPC code...
|
// actual PowerPC code...
|
||||||
|
|
||||||
|
// THIS FILE IS GROSS!!!
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -35,16 +37,17 @@
|
||||||
#include "ARDecrypt.h"
|
#include "ARDecrypt.h"
|
||||||
#include "LogManager.h"
|
#include "LogManager.h"
|
||||||
|
|
||||||
namespace
|
namespace ActionReplay
|
||||||
{
|
{
|
||||||
static std::vector<AREntry>::const_iterator iter;
|
|
||||||
static ARCode code;
|
static std::vector<AREntry>::const_iterator iter;
|
||||||
static bool b_RanOnce = false;
|
static ARCode code;
|
||||||
static std::vector<ARCode> arCodes;
|
static bool b_RanOnce = false;
|
||||||
static std::vector<ARCode> activeCodes;
|
static std::vector<ARCode> arCodes;
|
||||||
static bool logSelf = false;
|
static std::vector<ARCode> activeCodes;
|
||||||
static std::vector<std::string> arLog;
|
static bool logSelf = false;
|
||||||
} // namespace
|
static std::vector<std::string> arLog;
|
||||||
|
|
||||||
|
|
||||||
void LogInfo(const char *format, ...);
|
void LogInfo(const char *format, ...);
|
||||||
// --- Codes ---
|
// --- Codes ---
|
||||||
|
@ -66,11 +69,11 @@ bool NormalCode_Type_5(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
||||||
bool NormalCode_Type_6(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
bool NormalCode_Type_6(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
||||||
bool NormalCode_Type_7(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
bool NormalCode_Type_7(u8 subtype, u32 addr, u32 data, int *count, bool *skip);
|
||||||
|
|
||||||
void LoadActionReplayCodes(IniFile &ini)
|
void LoadCodes(IniFile &ini, bool forceLoad)
|
||||||
{
|
{
|
||||||
// Parses the Action Replay section of a game ini file.
|
// Parses the Action Replay section of a game ini file.
|
||||||
if (!Core::GetStartupParameter().bEnableCheats)
|
if (!Core::GetStartupParameter().bEnableCheats && !forceLoad)
|
||||||
return; // If cheats are off, do not load them
|
return;
|
||||||
|
|
||||||
std::vector<std::string> lines;
|
std::vector<std::string> lines;
|
||||||
std::vector<std::string> encryptedLines;
|
std::vector<std::string> encryptedLines;
|
||||||
|
@ -158,7 +161,13 @@ void LoadActionReplayCodes(IniFile &ini)
|
||||||
arCodes.push_back(currentCode);
|
arCodes.push_back(currentCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionReplay_UpdateActiveList();
|
UpdateActiveList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadCodes(std::vector<ARCode> &_arCodes, IniFile &ini)
|
||||||
|
{
|
||||||
|
LoadCodes(ini, true);
|
||||||
|
_arCodes = arCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogInfo(const char *format, ...)
|
void LogInfo(const char *format, ...)
|
||||||
|
@ -184,14 +193,14 @@ void LogInfo(const char *format, ...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionReplayRunAllActive()
|
void RunAllActive()
|
||||||
{
|
{
|
||||||
if (Core::GetStartupParameter().bEnableCheats) {
|
if (Core::GetStartupParameter().bEnableCheats) {
|
||||||
for (std::vector<ARCode>::iterator iter = activeCodes.begin(); iter != activeCodes.end(); ++iter)
|
for (std::vector<ARCode>::iterator iter = activeCodes.begin(); iter != activeCodes.end(); ++iter)
|
||||||
{
|
{
|
||||||
if (iter->active)
|
if (iter->active)
|
||||||
{
|
{
|
||||||
if (!RunActionReplayCode(*iter))
|
if (!RunCode(*iter))
|
||||||
iter->active = false;
|
iter->active = false;
|
||||||
LogInfo("\n");
|
LogInfo("\n");
|
||||||
}
|
}
|
||||||
|
@ -201,7 +210,7 @@ void ActionReplayRunAllActive()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RunActionReplayCode(const ARCode &arcode) {
|
bool RunCode(const ARCode &arcode) {
|
||||||
// The mechanism is different than what the real AR uses, so there may be compatibility problems.
|
// The mechanism is different than what the real AR uses, so there may be compatibility problems.
|
||||||
u8 cmd;
|
u8 cmd;
|
||||||
u32 addr;
|
u32 addr;
|
||||||
|
@ -999,33 +1008,33 @@ bool NormalCode_Type_7(u8 subtype, u32 addr, u32 data, int *count, bool *skip)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ActionReplay_GetCodeListSize()
|
size_t GetCodeListSize()
|
||||||
{
|
{
|
||||||
return arCodes.size();
|
return arCodes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
ARCode ActionReplay_GetARCode(size_t index)
|
ARCode GetARCode(size_t index)
|
||||||
{
|
{
|
||||||
if (index > arCodes.size())
|
if (index > arCodes.size())
|
||||||
{
|
{
|
||||||
PanicAlert("ActionReplay_GetARCode: Index is greater than ar code list size %i", index);
|
PanicAlert("GetARCode: Index is greater than ar code list size %i", index);
|
||||||
return ARCode();
|
return ARCode();
|
||||||
}
|
}
|
||||||
return arCodes[index];
|
return arCodes[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionReplay_SetARCode_IsActive(bool active, size_t index)
|
void SetARCode_IsActive(bool active, size_t index)
|
||||||
{
|
{
|
||||||
if (index > arCodes.size())
|
if (index > arCodes.size())
|
||||||
{
|
{
|
||||||
PanicAlert("ActionReplay_SetARCode_IsActive: Index is greater than ar code list size %i", index);
|
PanicAlert("SetARCode_IsActive: Index is greater than ar code list size %i", index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
arCodes[index].active = active;
|
arCodes[index].active = active;
|
||||||
ActionReplay_UpdateActiveList();
|
UpdateActiveList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionReplay_UpdateActiveList()
|
void UpdateActiveList()
|
||||||
{
|
{
|
||||||
b_RanOnce = false;
|
b_RanOnce = false;
|
||||||
activeCodes.clear();
|
activeCodes.clear();
|
||||||
|
@ -1036,17 +1045,19 @@ void ActionReplay_UpdateActiveList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionReplay_EnableSelfLogging(bool enable)
|
void EnableSelfLogging(bool enable)
|
||||||
{
|
{
|
||||||
logSelf = enable;
|
logSelf = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<std::string> &ActionReplay_GetSelfLog()
|
const std::vector<std::string> &GetSelfLog()
|
||||||
{
|
{
|
||||||
return arLog;
|
return arLog;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ActionReplay_IsSelfLogging()
|
bool IsSelfLogging()
|
||||||
{
|
{
|
||||||
return logSelf;
|
return logSelf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ActionReplay
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
|
|
||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
|
|
||||||
|
namespace ActionReplay
|
||||||
|
{
|
||||||
|
|
||||||
struct AREntry {
|
struct AREntry {
|
||||||
u32 cmd_addr;
|
u32 cmd_addr;
|
||||||
u32 value;
|
u32 value;
|
||||||
|
@ -31,15 +34,17 @@ struct ARCode {
|
||||||
bool active;
|
bool active;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ActionReplayRunAllActive();
|
void RunAllActive();
|
||||||
bool RunActionReplayCode(const ARCode &arcode);
|
bool RunCode(const ARCode &arcode);
|
||||||
void LoadActionReplayCodes(IniFile &ini);
|
void LoadCodes(IniFile &ini, bool forceLoad);
|
||||||
size_t ActionReplay_GetCodeListSize();
|
void LoadCodes(std::vector<ARCode> &_arCodes, IniFile &ini);
|
||||||
ARCode ActionReplay_GetARCode(size_t index);
|
size_t GetCodeListSize();
|
||||||
void ActionReplay_SetARCode_IsActive(bool active, size_t index);
|
ARCode GetARCode(size_t index);
|
||||||
void ActionReplay_UpdateActiveList();
|
void SetARCode_IsActive(bool active, size_t index);
|
||||||
void ActionReplay_EnableSelfLogging(bool enable);
|
void UpdateActiveList();
|
||||||
const std::vector<std::string> &ActionReplay_GetSelfLog();
|
void EnableSelfLogging(bool enable);
|
||||||
bool ActionReplay_IsSelfLogging();
|
const std::vector<std::string> &GetSelfLog();
|
||||||
|
bool IsSelfLogging();
|
||||||
|
} // namespace
|
||||||
|
|
||||||
#endif //_ACTIONREPLAY_H_
|
#endif //_ACTIONREPLAY_H_
|
||||||
|
|
|
@ -136,7 +136,7 @@ void LoadPatches(const char *gameID)
|
||||||
std::string filename = std::string(FULL_GAMECONFIG_DIR) + gameID + ".ini";
|
std::string filename = std::string(FULL_GAMECONFIG_DIR) + gameID + ".ini";
|
||||||
if (ini.Load(filename.c_str())) {
|
if (ini.Load(filename.c_str())) {
|
||||||
LoadPatchSection("OnFrame", onFrame, ini);
|
LoadPatchSection("OnFrame", onFrame, ini);
|
||||||
LoadActionReplayCodes(ini);
|
ActionReplay::LoadCodes(ini, false);
|
||||||
LoadSpeedhacks("Speedhacks", speedHacks, ini);
|
LoadSpeedhacks("Speedhacks", speedHacks, ini);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,6 @@ void ApplyFramePatches()
|
||||||
|
|
||||||
void ApplyARPatches()
|
void ApplyARPatches()
|
||||||
{
|
{
|
||||||
ActionReplayRunAllActive();
|
ActionReplay::RunAllActive();
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -768,6 +768,14 @@
|
||||||
RelativePath=".\Src\AboutDolphin.h"
|
RelativePath=".\Src\AboutDolphin.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\ARCodeAddEdit.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\ARCodeAddEdit.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Src\CheatsWindow.cpp"
|
RelativePath=".\Src\CheatsWindow.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
// Copyright (C) 2003-2008 Dolphin Project.
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, version 2.0.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License 2.0 for more details.
|
||||||
|
|
||||||
|
// A copy of the GPL 2.0 should have been included with the program.
|
||||||
|
// If not, see http://www.gnu.org/licenses/
|
||||||
|
|
||||||
|
// Official SVN repository and contact information can be found at
|
||||||
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
|
#include "ARCodeAddEdit.h"
|
||||||
|
|
||||||
|
extern std::vector<ActionReplay::ARCode> arCodes;
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(CARCodeAddEdit, wxDialog)
|
||||||
|
EVT_CLOSE(CARCodeAddEdit::OnClose)
|
||||||
|
EVT_SPIN(ID_ENTRY_SELECT, CARCodeAddEdit::ChangeEntry)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
CARCodeAddEdit::CARCodeAddEdit(int _selection, wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style)
|
||||||
|
: wxDialog(parent, id, title, position, size, style)
|
||||||
|
{
|
||||||
|
selection = _selection;
|
||||||
|
CreateGUIControls(selection);
|
||||||
|
}
|
||||||
|
|
||||||
|
CARCodeAddEdit::~CARCodeAddEdit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARCodeAddEdit::CreateGUIControls(int _selection)
|
||||||
|
{
|
||||||
|
ActionReplay::ARCode currentCode = arCodes.at(_selection);
|
||||||
|
|
||||||
|
wxBoxSizer* sEditCheat = new wxBoxSizer(wxVERTICAL);
|
||||||
|
wxStaticBoxSizer* sbEntry = new wxStaticBoxSizer(wxVERTICAL, this, _("Code"));
|
||||||
|
wxStaticText* EditCheatNameText = new wxStaticText(this, ID_EDITCHEAT_NAME_TEXT, _("Name:"), wxDefaultPosition, wxDefaultSize);
|
||||||
|
EditCheatName = new wxTextCtrl(this, ID_EDITCHEAT_NAME, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
|
||||||
|
EditCheatName->SetValue(wxString::FromAscii(currentCode.name.c_str()));
|
||||||
|
EntrySelection = new wxSpinButton(this, ID_ENTRY_SELECT, wxDefaultPosition, wxDefaultSize, wxVERTICAL);
|
||||||
|
EntrySelection->SetRange(0, (int)arCodes.size()-1);
|
||||||
|
EntrySelection->SetValue(_selection);
|
||||||
|
EditCheatCode = new wxTextCtrl(this, ID_EDITCHEAT_CODE, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
|
||||||
|
UpdateTextCtrl(currentCode);
|
||||||
|
wxGridBagSizer* sgEntry = new wxGridBagSizer(0, 0);
|
||||||
|
sgEntry->AddGrowableCol(1);
|
||||||
|
sgEntry->AddGrowableRow(1);
|
||||||
|
sgEntry->Add(EditCheatNameText, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5);
|
||||||
|
sgEntry->Add(EditCheatName, wxGBPosition(0, 1), wxGBSpan(1, 1), wxEXPAND|wxALL, 5);
|
||||||
|
sgEntry->Add(EntrySelection, wxGBPosition(0, 2), wxGBSpan(2, 1), wxEXPAND|wxALL, 5);
|
||||||
|
sgEntry->Add(EditCheatCode, wxGBPosition(1, 0), wxGBSpan(1, 2), wxEXPAND|wxALL, 5);
|
||||||
|
sbEntry->Add(sgEntry, 1, wxEXPAND);
|
||||||
|
sEditCheat->Add(sbEntry, 1, wxEXPAND|wxALL, 5);
|
||||||
|
wxBoxSizer* sEditCheatButtons = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
wxButton* bOK = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||||
|
wxButton* bCancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||||
|
sEditCheatButtons->Add(0, 0, 1, wxEXPAND, 5);
|
||||||
|
sEditCheatButtons->Add(bOK, 0, wxALL, 5);
|
||||||
|
sEditCheatButtons->Add(bCancel, 0, wxALL, 5);
|
||||||
|
sEditCheat->Add(sEditCheatButtons, 0, wxEXPAND, 5);
|
||||||
|
this->SetSizer(sEditCheat);
|
||||||
|
sEditCheat->Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARCodeAddEdit::OnClose(wxCloseEvent& WXUNUSED (event))
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARCodeAddEdit::ChangeEntry(wxSpinEvent& event)
|
||||||
|
{
|
||||||
|
ActionReplay::ARCode currentCode = arCodes.at(event.GetPosition());
|
||||||
|
EditCheatName->SetValue(wxString::FromAscii(currentCode.name.c_str()));
|
||||||
|
UpdateTextCtrl(currentCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARCodeAddEdit::UpdateTextCtrl(ActionReplay::ARCode arCode)
|
||||||
|
{
|
||||||
|
EditCheatCode->Clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < arCode.ops.size(); i++)
|
||||||
|
EditCheatCode->AppendText(wxString::Format("%08X %08X\n", arCode.ops.at(i).cmd_addr, arCode.ops.at(i).value));
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Copyright (C) 2003-2008 Dolphin Project.
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, version 2.0.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License 2.0 for more details.
|
||||||
|
|
||||||
|
// A copy of the GPL 2.0 should have been included with the program.
|
||||||
|
// If not, see http://www.gnu.org/licenses/
|
||||||
|
|
||||||
|
// Official SVN repository and contact information can be found at
|
||||||
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
|
#ifndef __ARCODE_ADDEDIT_h__
|
||||||
|
#define __ARCODE_ADDEDIT_h__
|
||||||
|
|
||||||
|
#include <wx/wx.h>
|
||||||
|
#include <wx/spinctrl.h>
|
||||||
|
#include "ISOProperties.h"
|
||||||
|
|
||||||
|
class CARCodeAddEdit : public wxDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CARCodeAddEdit(int _selection, wxWindow* parent,
|
||||||
|
wxWindowID id = 1,
|
||||||
|
const wxString& title = wxT("Edit ActionReplay Code"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
|
virtual ~CARCodeAddEdit();
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
|
wxTextCtrl *EditCheatName;
|
||||||
|
wxSpinButton *EntrySelection;
|
||||||
|
wxTextCtrl *EditCheatCode;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ID_EDITCHEAT_NAME_TEXT = 4550,
|
||||||
|
ID_EDITCHEAT_NAME,
|
||||||
|
ID_ENTRY_SELECT,
|
||||||
|
ID_EDITCHEAT_CODE
|
||||||
|
};
|
||||||
|
|
||||||
|
void CreateGUIControls(int selection);
|
||||||
|
void OnClose(wxCloseEvent& event);
|
||||||
|
void ChangeEntry(wxSpinEvent& event);
|
||||||
|
void UpdateTextCtrl(ActionReplay::ARCode arCode);
|
||||||
|
|
||||||
|
int selection;
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif // __PATCH_ADDEDIT_h__
|
|
@ -25,13 +25,15 @@
|
||||||
#include <wx/mstream.h>
|
#include <wx/mstream.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
#undef ABOUTDOLPHIN_STYLE
|
|
||||||
#define ABOUTDOLPHIN_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class AboutDolphin : public wxDialog
|
class AboutDolphin : public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AboutDolphin(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About Dolphin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ABOUTDOLPHIN_STYLE);
|
AboutDolphin(wxWindow *parent,
|
||||||
|
wxWindowID id = 1,
|
||||||
|
const wxString &title = wxT("About Dolphin"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~AboutDolphin();
|
virtual ~AboutDolphin();
|
||||||
void CloseClick(wxCommandEvent& event);
|
void CloseClick(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include "ActionReplay.h"
|
#include "ActionReplay.h"
|
||||||
#include "Core.h"
|
#include "Core.h"
|
||||||
|
|
||||||
|
using namespace ActionReplay;
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxCheatsWindow, wxWindow)
|
BEGIN_EVENT_TABLE(wxCheatsWindow, wxWindow)
|
||||||
EVT_SIZE( wxCheatsWindow::OnEvent_Window_Resize)
|
EVT_SIZE( wxCheatsWindow::OnEvent_Window_Resize)
|
||||||
EVT_CLOSE( wxCheatsWindow::OnEvent_Window_Close)
|
EVT_CLOSE( wxCheatsWindow::OnEvent_Window_Close)
|
||||||
|
@ -31,7 +33,8 @@ BEGIN_EVENT_TABLE(wxCheatsWindow, wxWindow)
|
||||||
EVT_CHECKBOX(ID_CHECKBOX_LOGAR, wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange)
|
EVT_CHECKBOX(ID_CHECKBOX_LOGAR, wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxCheatsWindow::wxCheatsWindow(wxFrame* parent, const wxPoint& pos, const wxSize& size) : wxFrame(parent, wxID_ANY, _T("Action Replay"), pos, size, wxCHEATSWINDOW_STYLE)
|
wxCheatsWindow::wxCheatsWindow(wxFrame* parent, const wxPoint& pos, const wxSize& size) :
|
||||||
|
wxFrame(parent, wxID_ANY, _T("Action Replay"), pos, size, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
|
||||||
{
|
{
|
||||||
// Create the GUI controls
|
// Create the GUI controls
|
||||||
Init_ChildControls();
|
Init_ChildControls();
|
||||||
|
@ -93,7 +96,7 @@ void wxCheatsWindow::Init_ChildControls()
|
||||||
|
|
||||||
m_Button_UpdateLog = new wxButton(m_Tab_Log, ID_BUTTON_UPDATELOG, wxT("Update"));
|
m_Button_UpdateLog = new wxButton(m_Tab_Log, ID_BUTTON_UPDATELOG, wxT("Update"));
|
||||||
m_CheckBox_LogAR = new wxCheckBox(m_Tab_Log, ID_CHECKBOX_LOGAR, wxT("Enable AR Logging"));
|
m_CheckBox_LogAR = new wxCheckBox(m_Tab_Log, ID_CHECKBOX_LOGAR, wxT("Enable AR Logging"));
|
||||||
m_CheckBox_LogAR->SetValue(ActionReplay_IsSelfLogging());
|
m_CheckBox_LogAR->SetValue(IsSelfLogging());
|
||||||
m_TextCtrl_Log = new wxTextCtrl(m_Tab_Log, ID_TEXTCTRL_LOG, wxT(""), wxDefaultPosition, wxSize(100, 600), wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP);
|
m_TextCtrl_Log = new wxTextCtrl(m_Tab_Log, ID_TEXTCTRL_LOG, wxT(""), wxDefaultPosition, wxSize(100, 600), wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP);
|
||||||
|
|
||||||
wxBoxSizer *HStrip1 = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *HStrip1 = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
@ -139,10 +142,10 @@ void wxCheatsWindow::OnEvent_Window_Close(wxCloseEvent& WXUNUSED (event))
|
||||||
void wxCheatsWindow::Load_ARCodes()
|
void wxCheatsWindow::Load_ARCodes()
|
||||||
{
|
{
|
||||||
indexList.clear();
|
indexList.clear();
|
||||||
size_t size = ActionReplay_GetCodeListSize();
|
size_t size = GetCodeListSize();
|
||||||
for (size_t i = 0; i < size; i++)
|
for (size_t i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
ARCode code = ActionReplay_GetARCode(i);
|
ARCode code = GetARCode(i);
|
||||||
ARCodeIndex ind;
|
ARCodeIndex ind;
|
||||||
u32 index = m_CheckListBox_CheatsList->Append(wxString::FromAscii(code.name.c_str()));
|
u32 index = m_CheckListBox_CheatsList->Append(wxString::FromAscii(code.name.c_str()));
|
||||||
m_CheckListBox_CheatsList->Check(index, code.active);
|
m_CheckListBox_CheatsList->Check(index, code.active);
|
||||||
|
@ -158,7 +161,7 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED (e
|
||||||
{
|
{
|
||||||
if ((int)indexList[i].uiIndex == index)
|
if ((int)indexList[i].uiIndex == index)
|
||||||
{
|
{
|
||||||
ARCode code = ActionReplay_GetARCode(i);
|
ARCode code = GetARCode(i);
|
||||||
m_Label_Codename->SetLabel(wxT("Name: ") + wxString::FromAscii(code.name.c_str()));
|
m_Label_Codename->SetLabel(wxT("Name: ") + wxString::FromAscii(code.name.c_str()));
|
||||||
char text[CHAR_MAX];
|
char text[CHAR_MAX];
|
||||||
char* numcodes = text;
|
char* numcodes = text;
|
||||||
|
@ -183,7 +186,7 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemToggled(wxCommandEvent& WXUNUSED (ev
|
||||||
{
|
{
|
||||||
if ((int)indexList[i].uiIndex == index)
|
if ((int)indexList[i].uiIndex == index)
|
||||||
{
|
{
|
||||||
ActionReplay_SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(index), indexList[i].index);
|
SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(index), indexList[i].index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,14 +194,14 @@ void wxCheatsWindow::OnEvent_ButtonUpdateCodes_Press(wxCommandEvent& WXUNUSED (e
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < indexList.size(); i++)
|
for (size_t i = 0; i < indexList.size(); i++)
|
||||||
{
|
{
|
||||||
ActionReplay_SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxCheatsWindow::OnEvent_ButtonUpdateLog_Press(wxCommandEvent& WXUNUSED (event))
|
void wxCheatsWindow::OnEvent_ButtonUpdateLog_Press(wxCommandEvent& WXUNUSED (event))
|
||||||
{
|
{
|
||||||
m_TextCtrl_Log->Clear();
|
m_TextCtrl_Log->Clear();
|
||||||
const std::vector<std::string> &arLog = ActionReplay_GetSelfLog();
|
const std::vector<std::string> &arLog = GetSelfLog();
|
||||||
for (u32 i = 0; i < arLog.size(); i++)
|
for (u32 i = 0; i < arLog.size(); i++)
|
||||||
{
|
{
|
||||||
m_TextCtrl_Log->AppendText(wxString::FromAscii(arLog[i].c_str()));
|
m_TextCtrl_Log->AppendText(wxString::FromAscii(arLog[i].c_str()));
|
||||||
|
@ -207,5 +210,5 @@ void wxCheatsWindow::OnEvent_ButtonUpdateLog_Press(wxCommandEvent& WXUNUSED (eve
|
||||||
|
|
||||||
void wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange(wxCommandEvent& WXUNUSED (event))
|
void wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange(wxCommandEvent& WXUNUSED (event))
|
||||||
{
|
{
|
||||||
ActionReplay_EnableSelfLogging(m_CheckBox_LogAR->IsChecked());
|
EnableSelfLogging(m_CheckBox_LogAR->IsChecked());
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,9 +36,6 @@
|
||||||
#include "Filesystem.h"
|
#include "Filesystem.h"
|
||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
|
|
||||||
#undef wxCHEATSWINDOW_STYLE
|
|
||||||
#define wxCHEATSWINDOW_STYLE wxCAPTION | wxSYSTEM_MENU | wxCLOSE_BOX | wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE
|
|
||||||
|
|
||||||
class wxCheatsWindow : public wxFrame
|
class wxCheatsWindow : public wxFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -22,18 +22,19 @@
|
||||||
#include <wx/gbsizer.h>
|
#include <wx/gbsizer.h>
|
||||||
#include <wx/notebook.h>
|
#include <wx/notebook.h>
|
||||||
#include <wx/filepicker.h>
|
#include <wx/filepicker.h>
|
||||||
//#include <wx/listbox.h>
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
|
|
||||||
#undef CONFIG_MAIN_STYLE
|
|
||||||
#define CONFIG_MAIN_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class CConfigMain
|
class CConfigMain
|
||||||
: public wxDialog
|
: public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
CConfigMain(wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Dolphin Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = CONFIG_MAIN_STYLE);
|
CConfigMain(wxWindow* parent,
|
||||||
|
wxWindowID id = 1,
|
||||||
|
const wxString& title = wxT("Dolphin Configuration"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~CConfigMain();
|
virtual ~CConfigMain();
|
||||||
void CloseClick(wxCommandEvent& event);
|
void CloseClick(wxCommandEvent& event);
|
||||||
void OnSelectionChanged(wxCommandEvent& event);
|
void OnSelectionChanged(wxCommandEvent& event);
|
||||||
|
|
|
@ -22,20 +22,14 @@
|
||||||
#include "Filesystem.h"
|
#include "Filesystem.h"
|
||||||
#include "ISOProperties.h"
|
#include "ISOProperties.h"
|
||||||
#include "PatchAddEdit.h"
|
#include "PatchAddEdit.h"
|
||||||
|
#include "ARCodeAddEdit.h"
|
||||||
|
|
||||||
|
|
||||||
DiscIO::IVolume *OpenISO = NULL;
|
DiscIO::IVolume *OpenISO = NULL;
|
||||||
DiscIO::IFileSystem *pFileSystem = NULL;
|
DiscIO::IFileSystem *pFileSystem = NULL;
|
||||||
|
|
||||||
std::vector<PatchEngine::Patch> onFrame;
|
std::vector<PatchEngine::Patch> onFrame;
|
||||||
|
std::vector<ActionReplay::ARCode> arCodes;
|
||||||
struct ARListCode {
|
|
||||||
std::string name;
|
|
||||||
bool enabled;
|
|
||||||
std::vector<std::string> ops;
|
|
||||||
u32 uiIndex;
|
|
||||||
};
|
|
||||||
std::vector<ARListCode> ARCodes;
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(CISOProperties, wxDialog)
|
BEGIN_EVENT_TABLE(CISOProperties, wxDialog)
|
||||||
|
@ -698,86 +692,58 @@ void CISOProperties::PatchButtonClicked(wxCommandEvent& event)
|
||||||
|
|
||||||
void CISOProperties::ActionReplayList_Load()
|
void CISOProperties::ActionReplayList_Load()
|
||||||
{
|
{
|
||||||
ARCodes.clear();
|
arCodes.clear();
|
||||||
Cheats->Clear();
|
Cheats->Clear();
|
||||||
std::vector<std::string> lines;
|
ActionReplay::LoadCodes(arCodes, GameIni);
|
||||||
|
|
||||||
if (!GameIni.GetLines("ActionReplay", lines))
|
u32 index = 0;
|
||||||
return;
|
for (std::vector<ActionReplay::ARCode>::const_iterator it = arCodes.begin(); it != arCodes.end(); ++it)
|
||||||
|
|
||||||
ARListCode code;
|
|
||||||
|
|
||||||
for (std::vector<std::string>::const_iterator it = lines.begin(); it != lines.end(); ++it)
|
|
||||||
{
|
{
|
||||||
std::string line = *it;
|
ActionReplay::ARCode arCode = *it;
|
||||||
|
Cheats->Append(wxString::FromAscii(arCode.name.c_str()));
|
||||||
if (line[0] == '+' || line[0] == '$')
|
Cheats->Check(index, arCode.active);
|
||||||
{
|
++index;
|
||||||
// Take care of the previous code
|
|
||||||
if (code.ops.size())
|
|
||||||
{
|
|
||||||
code.uiIndex = Cheats->Append(wxString::FromAscii(code.name.c_str()));
|
|
||||||
ARCodes.push_back(code);
|
|
||||||
Cheats->Check(code.uiIndex, code.enabled);
|
|
||||||
code.ops.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Give name and enabled to current code
|
|
||||||
if(line.size() > 1)
|
|
||||||
{
|
|
||||||
if (line[0] == '+')
|
|
||||||
{
|
|
||||||
code.enabled = true;
|
|
||||||
code.name = line.substr(2, line.size() - 2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
code.enabled = false;
|
|
||||||
code.name = line.substr(1, line.size() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
code.ops.push_back(line);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (code.ops.size())
|
|
||||||
{
|
|
||||||
code.uiIndex = Cheats->Append(wxString::FromAscii(code.name.c_str()));
|
|
||||||
ARCodes.push_back(code);
|
|
||||||
Cheats->Check(code.uiIndex, code.enabled);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CISOProperties::ActionReplayList_Save()
|
void CISOProperties::ActionReplayList_Save()
|
||||||
{
|
{
|
||||||
std::vector<std::string> lines;
|
std::vector<std::string> lines;
|
||||||
for (std::vector<ARListCode>::const_iterator iter = ARCodes.begin(); iter != ARCodes.end(); ++iter)
|
u32 index = 0;
|
||||||
|
for (std::vector<ActionReplay::ARCode>::const_iterator iter = arCodes.begin(); iter != arCodes.end(); ++iter)
|
||||||
{
|
{
|
||||||
ARListCode code = *iter;
|
ActionReplay::ARCode code = *iter;
|
||||||
|
|
||||||
lines.push_back(Cheats->IsChecked(code.uiIndex) ? "+$" + code.name : "$" + code.name);
|
lines.push_back(Cheats->IsChecked(index) ? "+$" + code.name : "$" + code.name);
|
||||||
|
|
||||||
for (std::vector<std::string>::const_iterator iter2 = code.ops.begin(); iter2 != code.ops.end(); ++iter2)
|
for (std::vector<ActionReplay::AREntry>::const_iterator iter2 = code.ops.begin(); iter2 != code.ops.end(); ++iter2)
|
||||||
{
|
{
|
||||||
lines.push_back(*iter2);
|
lines.push_back(wxString::Format("%08X %08X", iter2->cmd_addr, iter2->value).mb_str());
|
||||||
}
|
}
|
||||||
|
++index;
|
||||||
}
|
}
|
||||||
GameIni.SetLines("ActionReplay", lines);
|
GameIni.SetLines("ActionReplay", lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CISOProperties::ActionReplayButtonClicked(wxCommandEvent& event)
|
void CISOProperties::ActionReplayButtonClicked(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
|
int selection = Cheats->GetSelection();
|
||||||
|
|
||||||
switch (event.GetId())
|
switch (event.GetId())
|
||||||
{
|
{
|
||||||
case ID_EDITCHEAT:
|
case ID_EDITCHEAT:
|
||||||
// dialog
|
{
|
||||||
|
CARCodeAddEdit dlg(selection, this);
|
||||||
|
dlg.ShowModal();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ID_ADDCHEAT:
|
case ID_ADDCHEAT:
|
||||||
|
{
|
||||||
// dialog
|
// dialog
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ID_REMOVECHEAT:
|
case ID_REMOVECHEAT:
|
||||||
ARCodes.erase(ARCodes.begin() + Cheats->GetSelection());
|
arCodes.erase(arCodes.begin() + Cheats->GetSelection());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,15 +32,19 @@
|
||||||
#include "Filesystem.h"
|
#include "Filesystem.h"
|
||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
#include "PatchEngine.h"
|
#include "PatchEngine.h"
|
||||||
|
#include "ActionReplay.h"
|
||||||
#undef ISOPROPERTIES_STYLE
|
|
||||||
#define ISOPROPERTIES_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class CISOProperties : public wxDialog
|
class CISOProperties : public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
CISOProperties(const std::string fileName, wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ISOPROPERTIES_STYLE);
|
CISOProperties(const std::string fileName,
|
||||||
|
wxWindow* parent,
|
||||||
|
wxWindowID id = 1,
|
||||||
|
const wxString& title = wxT("Properties"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~CISOProperties();
|
virtual ~CISOProperties();
|
||||||
|
|
||||||
bool bRefreshList;
|
bool bRefreshList;
|
||||||
|
|
|
@ -25,7 +25,12 @@
|
||||||
class CPatchAddEdit : public wxDialog
|
class CPatchAddEdit : public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CPatchAddEdit(int _selection, wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Edit Patch"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(300, -1), long style = wxDEFAULT_DIALOG_STYLE);
|
CPatchAddEdit(int _selection, wxWindow* parent,
|
||||||
|
wxWindowID id = 1,
|
||||||
|
const wxString& title = wxT("Edit Patch"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxSize(300, -1),
|
||||||
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~CPatchAddEdit();
|
virtual ~CPatchAddEdit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -18,6 +18,7 @@ libs = [
|
||||||
if wxenv['HAVE_WX']:
|
if wxenv['HAVE_WX']:
|
||||||
files += [
|
files += [
|
||||||
'AboutDolphin.cpp',
|
'AboutDolphin.cpp',
|
||||||
|
'ARCodeAddEdit.cpp',
|
||||||
'ConfigMain.cpp',
|
'ConfigMain.cpp',
|
||||||
'Frame.cpp',
|
'Frame.cpp',
|
||||||
'GameListCtrl.cpp',
|
'GameListCtrl.cpp',
|
||||||
|
@ -27,10 +28,10 @@ if wxenv['HAVE_WX']:
|
||||||
'MemcardManager.cpp',
|
'MemcardManager.cpp',
|
||||||
'MemoryCards/GCMemcard.cpp',
|
'MemoryCards/GCMemcard.cpp',
|
||||||
'PluginManager.cpp',
|
'PluginManager.cpp',
|
||||||
'PatchAddEdit.cpp',
|
'PatchAddEdit.cpp',
|
||||||
'CheatsWindow.cpp',
|
'CheatsWindow.cpp',
|
||||||
'stdafx.cpp',
|
'stdafx.cpp',
|
||||||
'FrameWiimote.cpp',
|
'FrameWiimote.cpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
CPPDEFINES = [
|
CPPDEFINES = [
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#define PAD_ERR_TRANSFER -3
|
#define PAD_ERR_TRANSFER -3
|
||||||
|
|
||||||
#define PAD_USE_ORIGIN 0x0080
|
#define PAD_USE_ORIGIN 0x0080
|
||||||
|
|
||||||
#define PAD_BUTTON_LEFT 0x0001
|
#define PAD_BUTTON_LEFT 0x0001
|
||||||
#define PAD_BUTTON_RIGHT 0x0002
|
#define PAD_BUTTON_RIGHT 0x0002
|
||||||
#define PAD_BUTTON_DOWN 0x0004
|
#define PAD_BUTTON_DOWN 0x0004
|
||||||
|
@ -32,13 +33,13 @@ typedef void (*TLog)(const char* _pMessage);
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
TLog pLog;
|
TLog pLog;
|
||||||
} SPADInitialize;
|
} SPADInitialize;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned short button; // Or-ed PAD_BUTTON_* bits
|
unsigned short button; // Or-ed PAD_BUTTON_* and PAD_TRIGGER_* bits
|
||||||
unsigned char stickX; // 0 <= stickX <= 255
|
unsigned char stickX; // 0 <= stickX <= 255
|
||||||
unsigned char stickY; // 0 <= stickY <= 255
|
unsigned char stickY; // 0 <= stickY <= 255
|
||||||
unsigned char substickX; // 0 <= substickX <= 255
|
unsigned char substickX; // 0 <= substickX <= 255
|
||||||
|
@ -47,7 +48,7 @@ typedef struct
|
||||||
unsigned char triggerRight; // 0 <= triggerRight <= 255
|
unsigned char triggerRight; // 0 <= triggerRight <= 255
|
||||||
unsigned char analogA; // 0 <= analogA <= 255
|
unsigned char analogA; // 0 <= analogA <= 255
|
||||||
unsigned char analogB; // 0 <= analogB <= 255
|
unsigned char analogB; // 0 <= analogB <= 255
|
||||||
bool MicButton;
|
bool MicButton; // HAX
|
||||||
signed char err; // one of PAD_ERR_* number
|
signed char err; // one of PAD_ERR_* number
|
||||||
} SPADStatus;
|
} SPADStatus;
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ typedef struct
|
||||||
// Function: GetDllInfo
|
// Function: GetDllInfo
|
||||||
// Purpose: This function allows the emulator to gather information
|
// Purpose: This function allows the emulator to gather information
|
||||||
// about the DLL by filling in the PluginInfo structure.
|
// about the DLL by filling in the PluginInfo structure.
|
||||||
// input: a pointer to a PLUGIN_INFO structure that needs to be
|
// input: A pointer to a PLUGIN_INFO structure that needs to be
|
||||||
// filled by the function. (see def above)
|
// filled by the function. (see def above)
|
||||||
// output: none
|
// output: none
|
||||||
//
|
//
|
||||||
|
@ -69,7 +70,7 @@ EXPORT void CALL GetDllInfo(PLUGIN_INFO* _pPluginInfo);
|
||||||
// Function: DllConfig
|
// Function: DllConfig
|
||||||
// Purpose: This function is optional function that is provided
|
// Purpose: This function is optional function that is provided
|
||||||
// to allow the user to configure the DLL
|
// to allow the user to configure the DLL
|
||||||
// input: a handle to the window that calls this function
|
// input: A handle to the window that calls this function
|
||||||
// output: none
|
// output: none
|
||||||
//
|
//
|
||||||
EXPORT void CALL DllConfig(HWND _hParent);
|
EXPORT void CALL DllConfig(HWND _hParent);
|
||||||
|
|
|
@ -32,9 +32,6 @@
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include "../XInputBase.h"
|
#include "../XInputBase.h"
|
||||||
#endif
|
#endif
|
||||||
#undef CONFIGDIALOG_STYLE
|
|
||||||
#define CONFIGDIALOG_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigDialog : public wxDialog
|
class ConfigDialog : public wxDialog
|
||||||
{
|
{
|
||||||
|
@ -42,7 +39,7 @@ class ConfigDialog : public wxDialog
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Pad Configuration"),
|
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Pad Configuration"),
|
||||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = CONFIGDIALOG_STYLE);
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
|
|
||||||
virtual ~ConfigDialog();
|
virtual ~ConfigDialog();
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,6 @@
|
||||||
class CPBView;
|
class CPBView;
|
||||||
class IniFile;
|
class IniFile;
|
||||||
|
|
||||||
// Window settings - I'm not sure what these do. I just copied them gtom elsewhere basically.
|
|
||||||
#undef CDebugger_STYLE
|
|
||||||
|
|
||||||
#define CDebugger_STYLE wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE
|
|
||||||
|
|
||||||
class CDebugger : public wxDialog
|
class CDebugger : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -56,7 +51,7 @@ class CDebugger : public wxDialog
|
||||||
public:
|
public:
|
||||||
CDebugger(wxWindow *parent, wxWindowID id = 1, const wxString &title = _("Sound Debugger"),
|
CDebugger(wxWindow *parent, wxWindowID id = 1, const wxString &title = _("Sound Debugger"),
|
||||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||||
long style = CDebugger_STYLE);
|
long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE);
|
||||||
|
|
||||||
virtual ~CDebugger();
|
virtual ~CDebugger();
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
// Official SVN repository and contact information can be found at
|
// Official SVN repository and contact information can be found at
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#ifndef __CONFIGDIALOG_h__
|
#ifndef __OGL_CONFIGDIALOG_h__
|
||||||
#define __CONFIGDIALOG_h__
|
#define __OGL_CONFIGDIALOG_h__
|
||||||
|
|
||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#include <wx/dialog.h>
|
#include <wx/dialog.h>
|
||||||
|
@ -32,14 +32,11 @@
|
||||||
#include <wx/gbsizer.h>
|
#include <wx/gbsizer.h>
|
||||||
|
|
||||||
|
|
||||||
#undef ConfigDialog_STYLE
|
|
||||||
#define ConfigDialog_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigDialog : public wxDialog
|
class ConfigDialog : public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("OpenGL Plugin Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigDialog_STYLE);
|
ConfigDialog(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("OpenGL Plugin Configuration"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~ConfigDialog();
|
virtual ~ConfigDialog();
|
||||||
void CloseClick(wxCommandEvent& event);
|
void CloseClick(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -31,17 +31,13 @@
|
||||||
#include <wx/gbsizer.h>
|
#include <wx/gbsizer.h>
|
||||||
|
|
||||||
|
|
||||||
#undef ConfigDialog_STYLE
|
|
||||||
#define ConfigDialog_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigDialog : public wxDialog
|
class ConfigDialog : public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ConfigDialog(wxWindow *parent, wxWindowID id = 1,
|
ConfigDialog(wxWindow *parent, wxWindowID id = 1,
|
||||||
const wxString &title = wxT("Wii Remote Plugin Configuration"),
|
const wxString &title = wxT("Wii Remote Plugin Configuration"),
|
||||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||||
long style = ConfigDialog_STYLE);
|
long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~ConfigDialog();
|
virtual ~ConfigDialog();
|
||||||
void CloseClick(wxCommandEvent& event);
|
void CloseClick(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -44,8 +44,6 @@
|
||||||
#include <wx/statbox.h>
|
#include <wx/statbox.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
#undef AboutBox_STYLE
|
|
||||||
#define AboutBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class AboutBox : public wxDialog
|
class AboutBox : public wxDialog
|
||||||
{
|
{
|
||||||
|
@ -53,7 +51,8 @@ class AboutBox : public wxDialog
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = AboutBox_STYLE);
|
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~AboutBox();
|
virtual ~AboutBox();
|
||||||
void OKClick(wxCommandEvent& event);
|
void OKClick(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,6 @@
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
#undef ConfigBox_STYLE
|
|
||||||
#define ConfigBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class ConfigBox : public wxDialog
|
class ConfigBox : public wxDialog
|
||||||
{
|
{
|
||||||
|
@ -55,7 +53,8 @@ class ConfigBox : public wxDialog
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigBox_STYLE);
|
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~ConfigBox();
|
virtual ~ConfigBox();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -44,8 +44,6 @@
|
||||||
#include <wx/statbox.h>
|
#include <wx/statbox.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
#undef AboutBox_STYLE
|
|
||||||
#define AboutBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class AboutBox : public wxDialog
|
class AboutBox : public wxDialog
|
||||||
{
|
{
|
||||||
|
@ -53,7 +51,8 @@ class AboutBox : public wxDialog
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = AboutBox_STYLE);
|
AboutBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("About: nJoy Input Plugin"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~AboutBox();
|
virtual ~AboutBox();
|
||||||
void OKClick(wxCommandEvent& event);
|
void OKClick(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,6 @@
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
#undef ConfigBox_STYLE
|
|
||||||
#define ConfigBox_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
|
|
||||||
|
|
||||||
class ConfigBox : public wxDialog
|
class ConfigBox : public wxDialog
|
||||||
{
|
{
|
||||||
|
@ -55,7 +53,8 @@ class ConfigBox : public wxDialog
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = ConfigBox_STYLE);
|
ConfigBox(wxWindow *parent, wxWindowID id = 1, const wxString &title = wxT("Configure: nJoy Input Plugin"),
|
||||||
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
|
||||||
virtual ~ConfigBox();
|
virtual ~ConfigBox();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue