void MainWindow::updateMemory()
{
- uint32_t virtBase = ui->memoryViewAddress->text().toUInt(nullptr, 16) & ~0xFF;
- auto physBaseOpt = emu->virtToPhys(virtBase);
- auto physBase = physBaseOpt.value_or(0xFFFFFFFF);
- bool ok = physBaseOpt.has_value();
- if (ok && (virtBase != physBase))
+ uint32_t physBase;
+ uint32_t virtBase;
+bool ok;
+ if (ui->memoryViewAddress->text().startsWith('p')) {
+ physBase = ui->memoryViewAddress->text().remove('p').toUInt(nullptr, 16) & ~0xFF;
+ virtBase = physBase;
ui->physicalAddressLabel->setText(QStringLiteral("Physical: %1").arg(physBase, 8, 16, QLatin1Char('0')));
+ } else {
+ uint32_t virtBase = ui->memoryViewAddress->text().toUInt(nullptr, 16) & ~0xFF;
+ auto physBaseOpt = emu->virtToPhys(virtBase);
+ physBase = physBaseOpt.value_or(0xFFFFFFFF);
+ ok = physBaseOpt.has_value();
+ if (ok && (virtBase != physBase))
+ ui->physicalAddressLabel->setText(QStringLiteral("Physical: %1").arg(physBase, 8, 16, QLatin1Char('0')));
+ }
uint8_t block[0x100];
if (ok) {