save battery levels to config

This commit is contained in:
Arisotura 2022-03-06 22:47:21 +01:00
parent 3ec40c3dc8
commit a437a76f35
6 changed files with 49 additions and 5 deletions

View File

@ -618,7 +618,7 @@ void Reset()
Registers[4] = 0x40; Registers[4] = 0x40;
RegMasks[0] = 0x7F; RegMasks[0] = 0x7F;
RegMasks[1] = 0x01; RegMasks[1] = 0x00;
RegMasks[2] = 0x01; RegMasks[2] = 0x01;
RegMasks[3] = 0x03; RegMasks[3] = 0x03;
RegMasks[4] = 0x0F; RegMasks[4] = 0x0F;
@ -663,6 +663,7 @@ void Write(u8 val, u32 hold)
if (DataPos == 1) if (DataPos == 1)
{ {
// TODO: DSi-specific registers in DSi mode
u32 regid = Index & 0x07; u32 regid = Index & 0x07;
if (Index & 0x80) if (Index & 0x80)

View File

@ -135,6 +135,10 @@ int MouseHideSeconds;
bool PauseLostFocus; bool PauseLostFocus;
bool DSBatteryLevelOkay;
int DSiBatteryLevel;
bool DSiBatteryCharging;
const char* kConfigFile = "melonDS.ini"; const char* kConfigFile = "melonDS.ini";
@ -305,6 +309,10 @@ ConfigEntry ConfigFile[] =
{"MouseHideSeconds", 0, &MouseHideSeconds, 5}, {"MouseHideSeconds", 0, &MouseHideSeconds, 5},
{"PauseLostFocus", 1, &PauseLostFocus, false}, {"PauseLostFocus", 1, &PauseLostFocus, false},
{"DSBatteryLevelOkay", 1, &DSBatteryLevelOkay, true},
{"DSiBatteryLevel", 0, &DSiBatteryLevel, 0xF},
{"DSiBatteryCharging", 1, &DSiBatteryCharging, true},
{"", -1, nullptr, 0} {"", -1, nullptr, 0}
}; };

View File

@ -158,6 +158,10 @@ extern bool MouseHide;
extern int MouseHideSeconds; extern int MouseHideSeconds;
extern bool PauseLostFocus; extern bool PauseLostFocus;
extern bool DSBatteryLevelOkay;
extern int DSiBatteryLevel;
extern bool DSiBatteryCharging;
void Load(); void Load();
void Save(); void Save();

View File

@ -22,6 +22,7 @@
#include "SPI.h" #include "SPI.h"
#include "DSi_I2C.h" #include "DSi_I2C.h"
#include "NDS.h" #include "NDS.h"
#include "Config.h"
#include "types.h" #include "types.h"
@ -40,8 +41,8 @@ PowerManagementDialog::PowerManagementDialog(QWidget* parent) : QDialog(parent),
{ {
ui->grpDSBattery->setEnabled(false); ui->grpDSBattery->setEnabled(false);
oldDSiBatteryCharging = DSi_BPTWL::GetBatteryCharging();
oldDSiBatteryLevel = DSi_BPTWL::GetBatteryLevel(); oldDSiBatteryLevel = DSi_BPTWL::GetBatteryLevel();
oldDSiBatteryCharging = DSi_BPTWL::GetBatteryCharging();
} }
else else
{ {
@ -74,12 +75,24 @@ PowerManagementDialog::~PowerManagementDialog()
void PowerManagementDialog::done(int r) void PowerManagementDialog::done(int r)
{ {
if (r != QDialog::Accepted) if (r == QDialog::Accepted)
{
if (NDS::ConsoleType == 1)
{
Config::DSiBatteryLevel = DSi_BPTWL::GetBatteryLevel();
Config::DSiBatteryCharging = DSi_BPTWL::GetBatteryCharging();
}
else
{
Config::DSBatteryLevelOkay = SPI_Powerman::GetBatteryLevelOkay();
}
}
else
{ {
if (NDS::ConsoleType == 1) if (NDS::ConsoleType == 1)
{ {
DSi_BPTWL::SetBatteryCharging(oldDSiBatteryCharging);
DSi_BPTWL::SetBatteryLevel(oldDSiBatteryLevel); DSi_BPTWL::SetBatteryLevel(oldDSiBatteryLevel);
DSi_BPTWL::SetBatteryCharging(oldDSiBatteryCharging);
} }
else else
{ {

View File

@ -67,8 +67,8 @@ private:
bool inited; bool inited;
bool oldDSBatteryLevel; bool oldDSBatteryLevel;
bool oldDSiBatteryCharging;
u8 oldDSiBatteryLevel; u8 oldDSiBatteryLevel;
bool oldDSiBatteryCharging;
void updateDSBatteryLevelControls(); void updateDSBatteryLevelControls();
}; };

View File

@ -31,6 +31,8 @@
#include "NDS.h" #include "NDS.h"
#include "DSi.h" #include "DSi.h"
#include "SPI.h"
#include "DSi_I2C.h"
namespace ROMManager namespace ROMManager
@ -405,11 +407,25 @@ ARCodeFile* GetCheatFile()
} }
void SetBatteryLevels()
{
if (NDS::ConsoleType == 1)
{
DSi_BPTWL::SetBatteryLevel(Config::DSiBatteryLevel);
DSi_BPTWL::SetBatteryCharging(Config::DSiBatteryCharging);
}
else
{
SPI_Powerman::SetBatteryLevelOkay(Config::DSBatteryLevelOkay);
}
}
void Reset() void Reset()
{ {
NDS::SetConsoleType(Config::ConsoleType); NDS::SetConsoleType(Config::ConsoleType);
if (Config::ConsoleType == 1) EjectGBACart(); if (Config::ConsoleType == 1) EjectGBACart();
NDS::Reset(); NDS::Reset();
SetBatteryLevels();
if ((CartType != -1) && NDSSave) if ((CartType != -1) && NDSSave)
{ {
@ -453,6 +469,7 @@ bool LoadBIOS()
BaseAssetName = "";*/ BaseAssetName = "";*/
NDS::Reset(); NDS::Reset();
SetBatteryLevels();
return true; return true;
} }
@ -537,6 +554,7 @@ bool LoadROM(QStringList filepath, bool reset)
NDS::SetConsoleType(Config::ConsoleType); NDS::SetConsoleType(Config::ConsoleType);
NDS::EjectCart(); NDS::EjectCart();
NDS::Reset(); NDS::Reset();
SetBatteryLevels();
} }
u32 savelen = 0; u32 savelen = 0;