Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Changing the Gecko code comparison from metadata to data comparison
because different data sometimes have the same metadata
  • Loading branch information
john-peterson committed Jun 1, 2013
1 parent 4dad640 commit 80b09c0
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
32 changes: 32 additions & 0 deletions Source/Core/Core/Src/GeckoCode.cpp
Expand Up @@ -63,6 +63,38 @@ u32 GeckoCode::Code::GetAddress() const
return gcaddress + (use_po ? pointer_address : (base_address & 0xFE000000));
}

// return true if a code exists
bool GeckoCode::Exist(u32 address, u32 data)
{
std::vector<GeckoCode::Code>::const_iterator
codes_iter = codes.begin(),
codes_end = codes.end();
for (; codes_iter != codes_end; ++codes_iter)
{
if (codes_iter->address == address && codes_iter->data == data)
return true;
}
return false;
}

// return true if the code is identical
bool GeckoCode::Compare(GeckoCode compare) const
{
if (codes.size() != compare.codes.size())
return false;

int exist = 0;
std::vector<GeckoCode::Code>::const_iterator
codes_iter = codes.begin(),
codes_end = codes.end();
for (; codes_iter != codes_end; ++codes_iter)
{
if (compare.Exist(codes_iter->address, codes_iter->data))
exist++;
}
return exist == codes.size();
}

static std::mutex active_codes_lock;

// currently running code
Expand Down
3 changes: 3 additions & 0 deletions Source/Core/Core/Src/GeckoCode.h
Expand Up @@ -66,6 +66,9 @@ namespace Gecko
std::vector<std::string> notes;

bool enabled;

bool Compare(GeckoCode compare) const;
bool Exist(u32 address, u32 data);
};

void SetActiveCodes(const std::vector<GeckoCode>& gcodes);
Expand Down
5 changes: 2 additions & 3 deletions Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp
Expand Up @@ -283,9 +283,8 @@ void CodeConfigPanel::DownloadCodes(wxCommandEvent&)
break;
}

// code with this name+creator exists
if (existing_gcodes_iter->name == gcodes_iter->name &&
existing_gcodes_iter->creator == gcodes_iter->creator)
// code exists
if (existing_gcodes_iter->Compare(*gcodes_iter))
break;
}
}
Expand Down

0 comments on commit 80b09c0

Please sign in to comment.