From 7d36331dc4a613a54a801fb37bccf7d67ed64063 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 10 Feb 2015 00:25:52 -0800 Subject: [PATCH] GBA: Make some codes work without master codes --- src/gba/cheats.c | 6 ++++-- src/gba/gba.c | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/gba/cheats.c b/src/gba/cheats.c index 7d16df790..e44f4d6de 100644 --- a/src/gba/cheats.c +++ b/src/gba/cheats.c @@ -635,8 +635,10 @@ bool GBACheatParseFile(struct GBACheatDevice* device, struct VFile* vf) { GBACheatAddSet(device, set); newSet->gsaVersion = set->gsaVersion; memcpy(newSet->gsaSeeds, set->gsaSeeds, sizeof(newSet->gsaSeeds)); - newSet->hook = set->hook; - ++newSet->hook->refs; + if (set->hook) { + newSet->hook = set->hook; + ++newSet->hook->refs; + } } set = newSet; break; diff --git a/src/gba/gba.c b/src/gba/gba.c index b8eb1be12..f074a4696 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -715,6 +715,18 @@ void GBAFrameEnded(struct GBA* gba) { GBARRNextFrame(gba->rr); } + if (gba->cpu->components[GBA_COMPONENT_CHEAT_DEVICE]) { + struct GBACheatDevice* device = (struct GBACheatDevice*) gba->cpu->components[GBA_COMPONENT_CHEAT_DEVICE]; + size_t i; + for (i = 0; i < GBACheatSetsSize(&device->cheats); ++i) { + struct GBACheatSet* cheats = *GBACheatSetsGetPointer(&device->cheats, i); + if (!cheats->hook) { + GBACheatRefresh(device, cheats); + } + } + } + + struct GBAThread* thread = GBAThreadGetContext(); if (!thread) { return;