SignatureDB: MEGA FormatHandler added
This commit is contained in:
parent
82afda94f4
commit
5f81226d8d
|
@ -119,6 +119,11 @@ bool Compare(u32 address, u32 size, const MEGASignature& sig)
|
||||||
MEGASignatureDB::MEGASignatureDB() = default;
|
MEGASignatureDB::MEGASignatureDB() = default;
|
||||||
MEGASignatureDB::~MEGASignatureDB() = default;
|
MEGASignatureDB::~MEGASignatureDB() = default;
|
||||||
|
|
||||||
|
void MEGASignatureDB::Clear()
|
||||||
|
{
|
||||||
|
m_signatures.clear();
|
||||||
|
}
|
||||||
|
|
||||||
bool MEGASignatureDB::Load(const std::string& file_path)
|
bool MEGASignatureDB::Load(const std::string& file_path)
|
||||||
{
|
{
|
||||||
std::ifstream ifs;
|
std::ifstream ifs;
|
||||||
|
@ -145,6 +150,12 @@ bool MEGASignatureDB::Load(const std::string& file_path)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MEGASignatureDB::Save(const std::string& file_path) const
|
||||||
|
{
|
||||||
|
ERROR_LOG(OSHLE, "MEGA database save unsupported yet.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void MEGASignatureDB::Apply(PPCSymbolDB* symbol_db) const
|
void MEGASignatureDB::Apply(PPCSymbolDB* symbol_db) const
|
||||||
{
|
{
|
||||||
for (auto& it : symbol_db->AccessSymbols())
|
for (auto& it : symbol_db->AccessSymbols())
|
||||||
|
@ -164,6 +175,17 @@ void MEGASignatureDB::Apply(PPCSymbolDB* symbol_db) const
|
||||||
symbol_db->Index();
|
symbol_db->Index();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MEGASignatureDB::Populate(const PPCSymbolDB* func_db, const std::string& filter)
|
||||||
|
{
|
||||||
|
ERROR_LOG(OSHLE, "MEGA database can't be populated yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MEGASignatureDB::Add(u32 startAddr, u32 size, const std::string& name)
|
||||||
|
{
|
||||||
|
ERROR_LOG(OSHLE, "Can't add symbol to MEGA database yet.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void MEGASignatureDB::List() const
|
void MEGASignatureDB::List() const
|
||||||
{
|
{
|
||||||
for (const auto& entry : m_signatures)
|
for (const auto& entry : m_signatures)
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
#include "Core/PowerPC/SignatureDB/SignatureDB.h"
|
||||||
|
|
||||||
class PPCSymbolDB;
|
class PPCSymbolDB;
|
||||||
|
|
||||||
|
@ -35,16 +36,22 @@ struct MEGASignature
|
||||||
// - Hexstring representation with "." acting as a wildcard
|
// - Hexstring representation with "." acting as a wildcard
|
||||||
// - Name, represented as follow: ":0000 function_name"
|
// - Name, represented as follow: ":0000 function_name"
|
||||||
// - References located in the hexstring at offset: "^offset reference_name"
|
// - References located in the hexstring at offset: "^offset reference_name"
|
||||||
class MEGASignatureDB
|
class MEGASignatureDB : public SignatureDBFormatHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MEGASignatureDB();
|
MEGASignatureDB();
|
||||||
~MEGASignatureDB();
|
~MEGASignatureDB();
|
||||||
|
|
||||||
|
void Clear();
|
||||||
bool Load(const std::string& file_path);
|
bool Load(const std::string& file_path);
|
||||||
void Apply(PPCSymbolDB* symbol_db) const;
|
bool Save(const std::string& file_path) const;
|
||||||
void List() const;
|
void List() const;
|
||||||
|
|
||||||
|
void Apply(PPCSymbolDB* symbol_db) const;
|
||||||
|
void Populate(const PPCSymbolDB* func_db, const std::string& filter = "");
|
||||||
|
|
||||||
|
bool Add(u32 startAddr, u32 size, const std::string& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<MEGASignature> m_signatures;
|
std::vector<MEGASignature> m_signatures;
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
// Format Handlers
|
// Format Handlers
|
||||||
#include "Core/PowerPC/SignatureDB/CSVSignatureDB.h"
|
#include "Core/PowerPC/SignatureDB/CSVSignatureDB.h"
|
||||||
#include "Core/PowerPC/SignatureDB/DSYSignatureDB.h"
|
#include "Core/PowerPC/SignatureDB/DSYSignatureDB.h"
|
||||||
|
#include "Core/PowerPC/SignatureDB/MEGASignatureDB.h"
|
||||||
|
|
||||||
SignatureDB::SignatureDB(SignatureDB::HandlerType handler)
|
SignatureDB::SignatureDB(SignatureDB::HandlerType handler)
|
||||||
: m_handler(std::move(CreateFormatHandler(handler)))
|
: m_handler(std::move(CreateFormatHandler(handler)))
|
||||||
|
@ -30,6 +31,8 @@ SignatureDB::HandlerType SignatureDB::GetHandlerType(const std::string& file_pat
|
||||||
{
|
{
|
||||||
if (StringEndsWith(file_path, ".csv"))
|
if (StringEndsWith(file_path, ".csv"))
|
||||||
return SignatureDB::HandlerType::CSV;
|
return SignatureDB::HandlerType::CSV;
|
||||||
|
if (StringEndsWith(file_path, ".mega"))
|
||||||
|
return SignatureDB::HandlerType::MEGA;
|
||||||
return SignatureDB::HandlerType::DSY;
|
return SignatureDB::HandlerType::DSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +46,8 @@ SignatureDB::CreateFormatHandler(SignatureDB::HandlerType handler) const
|
||||||
return std::make_unique<DSYSignatureDB>();
|
return std::make_unique<DSYSignatureDB>();
|
||||||
case SignatureDB::HandlerType::CSV:
|
case SignatureDB::HandlerType::CSV:
|
||||||
return std::make_unique<CSVSignatureDB>();
|
return std::make_unique<CSVSignatureDB>();
|
||||||
|
case SignatureDB::HandlerType::MEGA:
|
||||||
|
return std::make_unique<MEGASignatureDB>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,8 @@ public:
|
||||||
enum class HandlerType
|
enum class HandlerType
|
||||||
{
|
{
|
||||||
DSY,
|
DSY,
|
||||||
CSV
|
CSV,
|
||||||
|
MEGA
|
||||||
};
|
};
|
||||||
explicit SignatureDB(HandlerType handler);
|
explicit SignatureDB(HandlerType handler);
|
||||||
explicit SignatureDB(const std::string& file_path);
|
explicit SignatureDB(const std::string& file_path);
|
||||||
|
|
|
@ -166,7 +166,8 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
static const wxString signature_selector = _("Dolphin Signature File (*.dsy)") + "|*.dsy|" +
|
static const wxString signature_selector = _("Dolphin Signature File (*.dsy)") + "|*.dsy|" +
|
||||||
_("Dolphin Signature CSV File (*.csv)") + "|*.csv|" +
|
_("Dolphin Signature CSV File (*.csv)") + "|*.csv|" +
|
||||||
wxGetTranslation(wxALL_FILES);
|
_("WiiTools Signature MEGA File (*.mega)") +
|
||||||
|
"|*.mega|" + wxGetTranslation(wxALL_FILES);
|
||||||
Parent->ClearStatusBar();
|
Parent->ClearStatusBar();
|
||||||
|
|
||||||
if (!Core::IsRunning())
|
if (!Core::IsRunning())
|
||||||
|
@ -429,22 +430,6 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IDM_USE_MEGA_SIGNATURE_FILE:
|
|
||||||
{
|
|
||||||
wxString path = wxFileSelector(
|
|
||||||
_("Apply MEGA signature file"), File::GetSysDirectory(), wxEmptyString, wxEmptyString,
|
|
||||||
_("MEGA Signature File (*.mega)") + "|*.mega|" + wxGetTranslation(wxALL_FILES),
|
|
||||||
wxFD_OPEN | wxFD_FILE_MUST_EXIST, this);
|
|
||||||
if (!path.IsEmpty())
|
|
||||||
{
|
|
||||||
MEGASignatureDB db;
|
|
||||||
db.Load(WxStrToStr(path));
|
|
||||||
db.Apply(&g_symbolDB);
|
|
||||||
db.List();
|
|
||||||
NotifyMapLoaded();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IDM_PATCH_HLE_FUNCTIONS:
|
case IDM_PATCH_HLE_FUNCTIONS:
|
||||||
HLE::PatchFunctions();
|
HLE::PatchFunctions();
|
||||||
Repopulate();
|
Repopulate();
|
||||||
|
|
|
@ -246,7 +246,6 @@ void CFrame::BindDebuggerMenuBarUpdateEvents()
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_COMBINE_SIGNATURE_FILES);
|
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_COMBINE_SIGNATURE_FILES);
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_RENAME_SYMBOLS);
|
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_RENAME_SYMBOLS);
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_USE_SIGNATURE_FILE);
|
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_USE_SIGNATURE_FILE);
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_USE_MEGA_SIGNATURE_FILE);
|
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_PATCH_HLE_FUNCTIONS);
|
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_PATCH_HLE_FUNCTIONS);
|
||||||
|
|
||||||
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreUninitialized, IDM_JIT_NO_BLOCK_CACHE);
|
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreUninitialized, IDM_JIT_NO_BLOCK_CACHE);
|
||||||
|
|
|
@ -232,7 +232,6 @@ enum
|
||||||
IDM_COMBINE_SIGNATURE_FILES,
|
IDM_COMBINE_SIGNATURE_FILES,
|
||||||
IDM_RENAME_SYMBOLS,
|
IDM_RENAME_SYMBOLS,
|
||||||
IDM_USE_SIGNATURE_FILE,
|
IDM_USE_SIGNATURE_FILE,
|
||||||
IDM_USE_MEGA_SIGNATURE_FILE,
|
|
||||||
IDM_PATCH_HLE_FUNCTIONS,
|
IDM_PATCH_HLE_FUNCTIONS,
|
||||||
|
|
||||||
// JIT
|
// JIT
|
||||||
|
|
|
@ -471,11 +471,7 @@ wxMenu* MainMenuBar::CreateSymbolsMenu() const
|
||||||
symbols_menu->Append(
|
symbols_menu->Append(
|
||||||
IDM_USE_SIGNATURE_FILE, _("Apply Signat&ure File..."),
|
IDM_USE_SIGNATURE_FILE, _("Apply Signat&ure File..."),
|
||||||
_("Must use Generate Symbols first! Recognise names of any standard library functions "
|
_("Must use Generate Symbols first! Recognise names of any standard library functions "
|
||||||
"used in multiple games, by loading them from a .dsy file."));
|
"used in multiple games, by loading them from a .dsy, .csv, or .mega file."));
|
||||||
symbols_menu->Append(
|
|
||||||
IDM_USE_MEGA_SIGNATURE_FILE, _("Apply &MEGA Signature File..."),
|
|
||||||
_("Must use Generate Symbols first! Recognise names of any standard library functions "
|
|
||||||
"used in multiple games, by loading them from a .mega file."));
|
|
||||||
symbols_menu->AppendSeparator();
|
symbols_menu->AppendSeparator();
|
||||||
symbols_menu->Append(IDM_PATCH_HLE_FUNCTIONS, _("&Patch HLE Functions"));
|
symbols_menu->Append(IDM_PATCH_HLE_FUNCTIONS, _("&Patch HLE Functions"));
|
||||||
symbols_menu->Append(IDM_RENAME_SYMBOLS, _("&Rename Symbols from File..."));
|
symbols_menu->Append(IDM_RENAME_SYMBOLS, _("&Rename Symbols from File..."));
|
||||||
|
|
Loading…
Reference in New Issue