mirror of https://github.com/mgba-emu/mgba.git
Qt: Unify state saving/loading flags
This commit is contained in:
parent
0501944b5a
commit
6d8a34a6dc
|
@ -31,6 +31,7 @@ CheatsView::CheatsView(GameController* controller, QWidget* parent)
|
||||||
connect(m_ui.addSet, SIGNAL(clicked()), this, SLOT(addSet()));
|
connect(m_ui.addSet, SIGNAL(clicked()), this, SLOT(addSet()));
|
||||||
connect(m_ui.remove, SIGNAL(clicked()), this, SLOT(removeSet()));
|
connect(m_ui.remove, SIGNAL(clicked()), this, SLOT(removeSet()));
|
||||||
connect(controller, SIGNAL(gameStopped(GBAThread*)), &m_model, SLOT(invalidated()));
|
connect(controller, SIGNAL(gameStopped(GBAThread*)), &m_model, SLOT(invalidated()));
|
||||||
|
connect(controller, SIGNAL(stateLoaded(GBAThread*)), &m_model, SLOT(invalidated()));
|
||||||
|
|
||||||
connect(m_ui.add, &QPushButton::clicked, [this]() {
|
connect(m_ui.add, &QPushButton::clicked, [this]() {
|
||||||
enterCheat(GBACheatAddLine);
|
enterCheat(GBACheatAddLine);
|
||||||
|
|
|
@ -58,6 +58,8 @@ GameController::GameController(QObject* parent)
|
||||||
, m_stateSlot(1)
|
, m_stateSlot(1)
|
||||||
, m_backupLoadState(nullptr)
|
, m_backupLoadState(nullptr)
|
||||||
, m_backupSaveState(nullptr)
|
, m_backupSaveState(nullptr)
|
||||||
|
, m_saveStateFlags(SAVESTATE_SCREENSHOT | SAVESTATE_SAVEDATA | SAVESTATE_CHEATS)
|
||||||
|
, m_loadStateFlags(SAVESTATE_SCREENSHOT)
|
||||||
{
|
{
|
||||||
m_renderer = new GBAVideoSoftwareRenderer;
|
m_renderer = new GBAVideoSoftwareRenderer;
|
||||||
GBAVideoSoftwareRendererCreate(m_renderer);
|
GBAVideoSoftwareRendererCreate(m_renderer);
|
||||||
|
@ -112,7 +114,7 @@ GameController::GameController(QObject* parent)
|
||||||
context->gba->video.renderer->disableOBJ = !controller->m_videoLayers[4];
|
context->gba->video.renderer->disableOBJ = !controller->m_videoLayers[4];
|
||||||
controller->m_fpsTarget = context->fpsTarget;
|
controller->m_fpsTarget = context->fpsTarget;
|
||||||
|
|
||||||
if (context->dirs.state && GBALoadState(context, context->dirs.state, 0, SAVESTATE_SCREENSHOT)) {
|
if (context->dirs.state && GBALoadState(context, context->dirs.state, 0, controller->m_loadStateFlags)) {
|
||||||
VFile* vf = GBAGetState(context->gba, context->dirs.state, 0, true);
|
VFile* vf = GBAGetState(context->gba, context->dirs.state, 0, true);
|
||||||
if (vf) {
|
if (vf) {
|
||||||
vf->truncate(vf, 0);
|
vf->truncate(vf, 0);
|
||||||
|
@ -141,7 +143,7 @@ GameController::GameController(QObject* parent)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
GameController* controller = static_cast<GameController*>(context->userData);
|
GameController* controller = static_cast<GameController*>(context->userData);
|
||||||
if (!GBASaveState(context, context->dirs.state, 0, true)) {
|
if (!GBASaveState(context, context->dirs.state, 0, controller->m_saveStateFlags)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
QMetaObject::invokeMethod(controller, "closeGame");
|
QMetaObject::invokeMethod(controller, "closeGame");
|
||||||
|
@ -710,7 +712,7 @@ void GameController::loadState(int slot) {
|
||||||
controller->m_backupLoadState = new GBASerializedState;
|
controller->m_backupLoadState = new GBASerializedState;
|
||||||
}
|
}
|
||||||
GBASerialize(context->gba, controller->m_backupLoadState);
|
GBASerialize(context->gba, controller->m_backupLoadState);
|
||||||
if (GBALoadState(context, context->dirs.state, controller->m_stateSlot, SAVESTATE_SCREENSHOT)) {
|
if (GBALoadState(context, context->dirs.state, controller->m_stateSlot, controller->m_loadStateFlags)) {
|
||||||
controller->frameAvailable(controller->m_drawContext);
|
controller->frameAvailable(controller->m_drawContext);
|
||||||
controller->stateLoaded(context);
|
controller->stateLoaded(context);
|
||||||
}
|
}
|
||||||
|
@ -733,7 +735,7 @@ void GameController::saveState(int slot) {
|
||||||
vf->read(vf, controller->m_backupSaveState.data(), controller->m_backupSaveState.size());
|
vf->read(vf, controller->m_backupSaveState.data(), controller->m_backupSaveState.size());
|
||||||
vf->close(vf);
|
vf->close(vf);
|
||||||
}
|
}
|
||||||
GBASaveState(context, context->dirs.state, controller->m_stateSlot, SAVESTATE_SCREENSHOT | EXTDATA_SAVEDATA);
|
GBASaveState(context, context->dirs.state, controller->m_stateSlot, controller->m_saveStateFlags);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,8 @@ private:
|
||||||
int m_stateSlot;
|
int m_stateSlot;
|
||||||
GBASerializedState* m_backupLoadState;
|
GBASerializedState* m_backupLoadState;
|
||||||
QByteArray m_backupSaveState;
|
QByteArray m_backupSaveState;
|
||||||
|
int m_saveStateFlags;
|
||||||
|
int m_loadStateFlags;
|
||||||
|
|
||||||
InputController* m_inputController;
|
InputController* m_inputController;
|
||||||
MultiplayerController* m_multiplayer;
|
MultiplayerController* m_multiplayer;
|
||||||
|
|
Loading…
Reference in New Issue