(Untested) Implement cheats

This commit is contained in:
twinaphex
2014-12-08 17:33:02 +01:00
parent e5d8cacfdd
commit 944b48a732
3 changed files with 51 additions and 3 deletions

View File

@@ -302,6 +302,29 @@ void FCEU_FlushGameCheats(FILE *override, int nosave) {
RebuildSubCheats(); /* Remove memory handlers. */
}
void FCEU_ResetCheats(void)
{
if (CheatComp) {
free(CheatComp);
CheatComp = 0;
}
if (cheats)
{
struct CHEATF *next = cheats;
for (;; ) {
struct CHEATF *last = next;
next = next->next;
free(last->name);
free(last);
if (!next) break;
}
cheats = cheatsl = 0;
}
RebuildSubCheats(); /* Remove memory handlers. */
}
int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type) {
char *t;

View File

@@ -9,4 +9,6 @@ void FCEU_FlushGameCheats(FILE *override, int nosave);
void FCEU_ApplyPeriodicCheats(void);
void FCEU_PowerCheats(void);
void FCEU_ResetCheats(void);
#endif

View File

@@ -797,10 +797,33 @@ bool retro_unserialize(const void * data, size_t size)
}
void retro_cheat_reset(void)
{}
{
FCEU_ResetCheats();
}
void retro_cheat_set(unsigned a, bool b, const char* c)
{ }
void retro_cheat_set(unsigned index, bool enabled, const char *code)
{
char name[256];
sprintf(name, "N/A");
uint16 a;
uint8 v;
int c;
int type = 1;
if (FCEUI_DecodeGG(code, &a, &v, &c))
goto input_cheat;
/* Not a Game Genie code. */
if (FCEUI_DecodePAR(code, &a, &v, &c, &type))
goto input_cheat;
/* Not a Pro Action Replay code. */
return;
input_cheat:
FCEUI_AddCheat(name, a, v, c, type);
}
bool retro_load_game(const struct retro_game_info *game)
{