Add step mode to z3ed cli emulator

This commit is contained in:
scawful
2023-12-05 03:47:24 -05:00
parent dad4a38f59
commit 04ef6cb35b

View File

@@ -282,13 +282,37 @@ class Emulator : public CommandHandler {
std::string filename = arg_vec[0];
RETURN_IF_ERROR(rom_.LoadFromFile(filename))
bool step = false;
if (arg_vec[1].empty()) {
snes.SetCpuMode(0);
} else {
snes.SetCpuMode(1);
step = true;
}
snes.SetupMemory(rom_);
snes.Init(rom_);
int i = 0;
while (i < 80000) {
snes.Run();
i++;
if (!step) {
int i = 0;
while (i < 80000) {
snes.Run();
i++;
}
} else {
// This loop should take in input from the keyboard, such as pressing
// space to step through the loop and pressing x to end the execution.
bool stepping = true;
std::cout << "Press space to step, x to exit" << std::endl;
while (stepping) {
char input;
std::cin.get(input);
if (input == 'x') {
break;
} else {
snes.StepRun();
}
}
}
return absl::OkStatus();