bulldoze more shit. make cheats work again.

This commit is contained in:
Arisotura
2022-01-06 14:12:04 +01:00
parent 53d5c17697
commit ba71086a65
12 changed files with 116 additions and 709 deletions

View File

@ -32,12 +32,11 @@
#include "NDS.h"
#include "DSi.h"
#include "AREngine.h"
namespace ROMManager
{
int CartType = -1;
std::string BaseROMDir = "";
std::string BaseROMName = "";
std::string BaseAssetName = "";
@ -50,6 +49,9 @@ std::string BaseGBAAssetName = "";
SaveManager* NDSSave = nullptr;
SaveManager* GBASave = nullptr;
ARCodeFile* CheatFile = nullptr;
bool CheatsOn = false;
int LastSep(std::string path)
{
@ -260,6 +262,40 @@ QString VerifySetup()
}
void UnloadCheats()
{
if (CheatFile)
{
delete CheatFile;
CheatFile = nullptr;
}
}
void LoadCheats()
{
UnloadCheats();
std::string filename = GetAssetPath(false, Config::CheatFilePath, ".mch");
// TODO: check for error (malformed cheat file, ...)
CheatFile = new ARCodeFile(filename);
AREngine::SetCodeFile(CheatsOn ? CheatFile : nullptr);
}
void EnableCheats(bool enable)
{
CheatsOn = enable;
if (CheatFile)
AREngine::SetCodeFile(CheatsOn ? CheatFile : nullptr);
}
ARCodeFile* GetCheatFile()
{
return CheatFile;
}
void Reset()
{
NDS::SetConsoleType(Config::ConsoleType);
@ -282,12 +318,13 @@ bool LoadBIOS()
if (NDS::NeedsDirectBoot())
return false;
if (NDSSave) delete NDSSave;
/*if (NDSSave) delete NDSSave;
NDSSave = nullptr;
CartType = -1;
BaseROMDir = "";
BaseROMName = "";
BaseAssetName = "";
BaseAssetName = "";*/
NDS::Reset();
return true;
@ -402,7 +439,10 @@ bool LoadROM(QStringList filepath, bool reset)
if (res)
{
CartType = 0;
NDSSave = new SaveManager(savname);
LoadCheats();
}
if (savedata) delete[] savedata;
@ -415,16 +455,24 @@ void EjectCart()
if (NDSSave) delete NDSSave;
NDSSave = nullptr;
UnloadCheats();
NDS::EjectCart();
CartType = -1;
BaseROMDir = "";
BaseROMName = "";
BaseAssetName = "";
}
bool CartInserted()
{
return CartType != -1;
}
QString CartLabel()
{
if (BaseROMName.empty())
if (CartType == -1)
return "(none)";
QString ret = QString::fromStdString(BaseROMName);
@ -532,6 +580,7 @@ bool LoadGBAROM(QStringList filepath)
if (res)
{
GBACartType = 0;
GBASave = new SaveManager(savname);
}
@ -566,6 +615,11 @@ void EjectGBACart()
BaseGBAAssetName = "";
}
bool GBACartInserted()
{
return GBACartType != -1;
}
QString GBACartLabel()
{
switch (GBACartType)
@ -581,11 +635,6 @@ QString GBACartLabel()
}
void ROMIcon(u8 (&data)[512], u16 (&palette)[16], u32* iconRef)
{
int index = 0;