mirror of https://github.com/mgba-emu/mgba.git
Qt: Add optional emulation-related information on reset (closes #1780)
This commit is contained in:
parent
006dba7d69
commit
851b01be15
1
CHANGES
1
CHANGES
|
@ -34,6 +34,7 @@ Misc:
|
|||
- Qt: Save converter now supports importing GameShark Advance saves
|
||||
- Qt: Save positions of multiplayer windows (closes mgba.io/i/2128)
|
||||
- Qt: Add optional frame counter to OSD (closes mgba.io/i/1728)
|
||||
- Qt: Add optional emulation-related information on reset (closes mgba.io/i/1780)
|
||||
- Windows: Attach to console if present
|
||||
|
||||
0.9.3: (2021-12-17)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <QMutexLocker>
|
||||
|
||||
#include <mgba/core/serialize.h>
|
||||
#include <mgba/core/version.h>
|
||||
#include <mgba/feature/video-logger.h>
|
||||
#ifdef M_CORE_GBA
|
||||
#include <mgba/internal/gba/gba.h>
|
||||
|
@ -92,7 +93,11 @@ CoreController::CoreController(mCore* core, QObject* parent)
|
|||
context->core->setVideoBuffer(context->core, reinterpret_cast<color_t*>(controller->m_activeBuffer.data()), controller->screenDimensions().width());
|
||||
}
|
||||
|
||||
QString message(tr("Reset r%1-%2 %3").arg(gitRevision).arg(QLatin1String(gitCommitShort)).arg(controller->m_crc32, 8, 16, QLatin1Char('0')));
|
||||
QMetaObject::invokeMethod(controller, "didReset");
|
||||
if (controller->m_showResetInfo) {
|
||||
QMetaObject::invokeMethod(controller, "statusPosted", Q_ARG(const QString&, message));
|
||||
}
|
||||
controller->finishFrame();
|
||||
};
|
||||
|
||||
|
@ -479,6 +484,10 @@ void CoreController::setSync(bool sync) {
|
|||
}
|
||||
}
|
||||
|
||||
void CoreController::showResetInfo(bool enable) {
|
||||
m_showResetInfo = enable;
|
||||
}
|
||||
|
||||
void CoreController::setRewinding(bool rewind) {
|
||||
if (!m_threadContext.core->opts.rewindEnable) {
|
||||
return;
|
||||
|
|
|
@ -134,6 +134,7 @@ public slots:
|
|||
void setPaused(bool paused);
|
||||
void frameAdvance();
|
||||
void setSync(bool enable);
|
||||
void showResetInfo(bool enable);
|
||||
|
||||
void setRewinding(bool);
|
||||
void rewind(int count = 0);
|
||||
|
@ -237,6 +238,7 @@ private:
|
|||
uint32_t m_crc32;
|
||||
QString m_internalTitle;
|
||||
QString m_dbTitle;
|
||||
bool m_showResetInfo = false;
|
||||
|
||||
QByteArray m_activeBuffer;
|
||||
QByteArray m_completeBuffer;
|
||||
|
|
|
@ -451,6 +451,7 @@ void SettingsView::updateConfig() {
|
|||
saveSetting("interframeBlending", m_ui.interframeBlending);
|
||||
saveSetting("showOSD", m_ui.showOSD);
|
||||
saveSetting("showFrameCounter", m_ui.showFrameCounter);
|
||||
saveSetting("showResetInfo", m_ui.showResetInfo);
|
||||
saveSetting("volume", m_ui.volume);
|
||||
saveSetting("mute", m_ui.mute);
|
||||
saveSetting("fastForwardVolume", m_ui.volumeFf);
|
||||
|
@ -670,6 +671,7 @@ void SettingsView::reloadConfig() {
|
|||
loadSetting("interframeBlending", m_ui.interframeBlending);
|
||||
loadSetting("showOSD", m_ui.showOSD, true);
|
||||
loadSetting("showFrameCounter", m_ui.showFrameCounter);
|
||||
loadSetting("showResetInfo", m_ui.showResetInfo);
|
||||
loadSetting("volume", m_ui.volume, 0x100);
|
||||
loadSetting("mute", m_ui.mute, false);
|
||||
loadSetting("fastForwardVolume", m_ui.volumeFf, m_ui.volume->value());
|
||||
|
|
|
@ -594,6 +594,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_41">
|
||||
<property name="text">
|
||||
<string>When inactive:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_21">
|
||||
<item>
|
||||
|
@ -612,6 +619,31 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_42">
|
||||
<property name="text">
|
||||
<string>When minimized:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_24">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="pauseOnMinimize">
|
||||
<property name="text">
|
||||
<string>Pause</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="muteOnMinimize">
|
||||
<property name="text">
|
||||
<string>Mute</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="10" column="0" colspan="2">
|
||||
<widget class="Line" name="line_17">
|
||||
<property name="orientation">
|
||||
|
@ -667,12 +699,26 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="16" column="1">
|
||||
<layout class="QVBoxLayout" name="osdDisplay">
|
||||
<property name="leftMargin">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showFrameCounter">
|
||||
<property name="text">
|
||||
<string>Show frame count in OSD</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showResetInfo">
|
||||
<property name="text">
|
||||
<string>Show emulation info on reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="17" column="1">
|
||||
<widget class="QCheckBox" name="useDiscordPresence">
|
||||
<property name="text">
|
||||
|
@ -734,38 +780,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_24">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="pauseOnMinimize">
|
||||
<property name="text">
|
||||
<string>Pause</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="muteOnMinimize">
|
||||
<property name="text">
|
||||
<string>Mute</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_41">
|
||||
<property name="text">
|
||||
<string>When inactive:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_42">
|
||||
<property name="text">
|
||||
<string>When minimized:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="update">
|
||||
|
@ -2321,6 +2335,38 @@
|
|||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>showOSD</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>showFrameCounter</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>374</x>
|
||||
<y>391</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>418</x>
|
||||
<y>431</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>showOSD</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>showResetInfo</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>374</x>
|
||||
<y>391</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>418</x>
|
||||
<y>470</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<buttongroups>
|
||||
<buttongroup name="gbColors"/>
|
||||
|
|
|
@ -1712,6 +1712,13 @@ void Window::setupMenu(QMenuBar* menubar) {
|
|||
}
|
||||
}, this);
|
||||
|
||||
ConfigOption* showResetInfo = m_config->addOption("showResetInfo");
|
||||
showResetInfo->connect([this](const QVariant& value) {
|
||||
if (m_controller) {
|
||||
m_controller->showResetInfo(value.toBool());
|
||||
}
|
||||
}, this);
|
||||
|
||||
ConfigOption* videoScale = m_config->addOption("videoScale");
|
||||
videoScale->connect([this](const QVariant& value) {
|
||||
if (m_display) {
|
||||
|
@ -2012,6 +2019,7 @@ void Window::setController(CoreController* controller, const QString& fname) {
|
|||
m_controller->loadConfig(m_config);
|
||||
m_config->updateOption("showOSD");
|
||||
m_config->updateOption("showFrameCounter");
|
||||
m_config->updateOption("showResetInfo");
|
||||
m_controller->start();
|
||||
|
||||
if (!m_pendingState.isEmpty()) {
|
||||
|
|
Loading…
Reference in New Issue