int CheatLoad(const char *filename) { FILE *fp; int i; char id[4]; char desc[256]; IOCheck_struct check = { 0, 0 }; if (!filename) return -1; if ((fp = fopen(filename, "rb")) == NULL) return -1; yread(&check, (void *)id, 1, 4, fp); if (strncmp(id, "YCHT", 4) != 0) { fclose(fp); return -2; } CheatClearCodes(); yread(&check, (void *)&numcheats, sizeof(int), 1, fp); #ifndef WORDS_BIGENDIAN DoubleWordSwap(numcheats); #endif if (numcheats >= cheatsize) { cheatlist = realloc(cheatlist, sizeof(cheatlist_struct) * (cheatsize * 2)); memset((void *)cheatlist, 0, sizeof(cheatlist_struct) * (cheatsize * 2)); cheatsize *= 2; } for(i = 0; i < numcheats; i++) { u8 descsize; yread(&check, (void *)&cheatlist[i].type, sizeof(int), 1, fp); yread(&check, (void *)&cheatlist[i].addr, sizeof(u32), 1, fp); yread(&check, (void *)&cheatlist[i].val, sizeof(u32), 1, fp); yread(&check, (void *)&descsize, sizeof(u8), 1, fp); yread(&check, (void *)desc, sizeof(char), descsize, fp); CheatChangeDescriptionByIndex(i, desc); yread(&check, (void *)&cheatlist[i].enable, sizeof(int), 1, fp); #ifndef WORDS_BIGENDIAN DoubleWordSwap(cheatlist[i].type); DoubleWordSwap(cheatlist[i].addr); DoubleWordSwap(cheatlist[i].val); DoubleWordSwap(cheatlist[i].enable); #endif } fclose (fp); return 0; }
void UICheats::on_pbClear_clicked() { // clear cheats CheatClearCodes(); // clear treewidget items twCheats->clear(); // disable buttons pbDelete->setEnabled( false ); pbClear->setEnabled( false ); }
void retro_cheat_reset(void) { CheatClearCodes(); }