AR will ignore the codes it doesn't like and keep executing the working ones.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@958 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
2f6d41e413
commit
92f991dd2b
|
@ -91,6 +91,7 @@ void LoadActionReplayCodes(IniFile &ini)
|
||||||
currentCode.name = line;
|
currentCode.name = line;
|
||||||
if (line[0] == '+') currentCode.active = true;
|
if (line[0] == '+') currentCode.active = true;
|
||||||
else currentCode.active = false;
|
else currentCode.active = false;
|
||||||
|
currentCode.failed = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +130,7 @@ void LoadActionReplayCodes(IniFile &ini)
|
||||||
void ActionReplayRunAllActive()
|
void ActionReplayRunAllActive()
|
||||||
{
|
{
|
||||||
if (Core::GetStartupParameter().bEnableCheats && !fail) {
|
if (Core::GetStartupParameter().bEnableCheats && !fail) {
|
||||||
for (std::vector<ARCode>::const_iterator iter = arCodes.begin(); iter != arCodes.end(); ++iter)
|
for (std::vector<ARCode>::iterator iter = arCodes.begin(); iter != arCodes.end(); ++iter)
|
||||||
if (iter->active)
|
if (iter->active)
|
||||||
RunActionReplayCode(*iter, false);
|
RunActionReplayCode(*iter, false);
|
||||||
}
|
}
|
||||||
|
@ -140,8 +141,12 @@ void ActionReplayRunAllActive()
|
||||||
// For example, some authors have created codes that add features to AR. Hacks for popular ones can be added here,
|
// For example, some authors have created codes that add features to AR. Hacks for popular ones can be added here,
|
||||||
// but the problem is not generally solvable.
|
// but the problem is not generally solvable.
|
||||||
// TODO: what is "nowIsBootup" for?
|
// TODO: what is "nowIsBootup" for?
|
||||||
void RunActionReplayCode(const ARCode &arcode, bool nowIsBootup) {
|
void RunActionReplayCode(ARCode &arcode, bool nowIsBootup) {
|
||||||
code = arcode;
|
code = arcode;
|
||||||
|
|
||||||
|
if (arcode.failed) // If the code doesn't work, skip it
|
||||||
|
return;
|
||||||
|
|
||||||
for (iter = code.ops.begin(); iter != code.ops.end(); ++iter)
|
for (iter = code.ops.begin(); iter != code.ops.end(); ++iter)
|
||||||
{
|
{
|
||||||
cmd = iter->cmd_addr >> 24;
|
cmd = iter->cmd_addr >> 24;
|
||||||
|
@ -167,7 +172,7 @@ void RunActionReplayCode(const ARCode &arcode, bool nowIsBootup) {
|
||||||
// ActionReplay program self modification codes
|
// ActionReplay program self modification codes
|
||||||
if (addr >= 0x00002000 && addr < 0x00003000) {
|
if (addr >= 0x00002000 && addr < 0x00003000) {
|
||||||
PanicAlert("This action replay simulator does not support codes that modify Action Replay itself.");
|
PanicAlert("This action replay simulator does not support codes that modify Action Replay itself.");
|
||||||
fail = true;
|
arcode.failed = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +207,7 @@ void RunActionReplayCode(const ARCode &arcode, bool nowIsBootup) {
|
||||||
continue;
|
continue;
|
||||||
default:
|
default:
|
||||||
PanicAlert("Zero code unknown to dolphin: %08x",zcode);
|
PanicAlert("Zero code unknown to dolphin: %08x",zcode);
|
||||||
fail = true;
|
arcode.failed = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,10 @@ struct ARCode {
|
||||||
std::string name;
|
std::string name;
|
||||||
std::vector<AREntry> ops;
|
std::vector<AREntry> ops;
|
||||||
bool active;
|
bool active;
|
||||||
|
bool failed;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ActionReplayRunAllActive();
|
void ActionReplayRunAllActive();
|
||||||
void RunActionReplayCode(const ARCode &arcode, bool nowIsBootup);
|
void RunActionReplayCode(ARCode &arcode, bool nowIsBootup);
|
||||||
void LoadActionReplayCodes(IniFile &ini);
|
void LoadActionReplayCodes(IniFile &ini);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue