summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2019-04-21 17:34:31 +0200
committerspycrab <spycrab@users.noreply.github.com>2019-04-21 17:34:31 +0200
commit05eb91691cc6d06a772dca12c63237df788596c0 (patch)
tree0c766f3963def68b37e894e68ad2afaea41d8474 /Source/Core
parent0b56d49d97d1cfb09af7fce8ad5c3802ebf6abf8 (diff)
Qt/CheatsManager: Fix value setting
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/CheatsManager.cpp43
1 files changed, 32 insertions, 11 deletions
diff --git a/Source/Core/DolphinQt/CheatsManager.cpp b/Source/Core/DolphinQt/CheatsManager.cpp
index f05abd5c99..3080125ab0 100644
--- a/Source/Core/DolphinQt/CheatsManager.cpp
+++ b/Source/Core/DolphinQt/CheatsManager.cpp
@@ -243,6 +243,24 @@ void CheatsManager::GenerateARCode()
m_ar_code->AddCode(ar_code);
}
+static void UpdatePatch(Result result)
+{
+ PowerPC::debug_interface.UnsetPatch(result.address);
+ if (result.locked)
+ {
+ switch (result.type)
+ {
+ case DataType::Byte:
+ PowerPC::debug_interface.SetPatch(result.address,
+ std::vector<u8>{static_cast<u8>(result.locked_value)});
+ break;
+ default:
+ PowerPC::debug_interface.SetPatch(result.address, result.locked_value);
+ break;
+ }
+ }
+}
+
void CheatsManager::OnWatchItemChanged(QTableWidgetItem* item)
{
if (m_updating)
@@ -256,15 +274,17 @@ void CheatsManager::OnWatchItemChanged(QTableWidgetItem* item)
case 0:
m_watch[index].name = item->text();
break;
- case 3:
+ case 2:
m_watch[index].locked = item->checkState() == Qt::Checked;
+
+ UpdatePatch(m_watch[index]);
break;
- case 4:
+ case 3:
{
const auto text = item->text();
u32 value = 0;
- switch (static_cast<DataType>(m_match_length->currentIndex()))
+ switch (m_watch[index].type)
{
case DataType::Byte:
value = text.toUShort(nullptr, 16) & 0xFF;
@@ -286,6 +306,9 @@ void CheatsManager::OnWatchItemChanged(QTableWidgetItem* item)
}
m_watch[index].locked_value = value;
+
+ UpdatePatch(m_watch[index]);
+
break;
}
}
@@ -572,24 +595,22 @@ void CheatsManager::Update()
value_item->setText(GetResultValue(m_results[i]));
- if (PowerPC::HostIsRAMAddress(m_watch[i].address) && m_watch[i].locked)
- PowerPC::debug_interface.SetPatch(m_watch[i].address, m_watch[i].locked_value);
-
name_item->setData(INDEX_ROLE, static_cast<int>(i));
name_item->setData(COLUMN_ROLE, 0);
+
address_item->setData(INDEX_ROLE, static_cast<int>(i));
address_item->setData(COLUMN_ROLE, 1);
- value_item->setData(INDEX_ROLE, static_cast<int>(i));
- value_item->setData(COLUMN_ROLE, 2);
+
lock_item->setData(INDEX_ROLE, static_cast<int>(i));
- lock_item->setData(COLUMN_ROLE, 3);
+ lock_item->setData(COLUMN_ROLE, 2);
+
value_item->setData(INDEX_ROLE, static_cast<int>(i));
- value_item->setData(COLUMN_ROLE, 4);
+ value_item->setData(COLUMN_ROLE, 3);
name_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
address_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
lock_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
- value_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+ value_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
lock_item->setCheckState(m_watch[i].locked ? Qt::Checked : Qt::Unchecked);