Add step mode to z3ed cli emulator
This commit is contained in:
@@ -282,13 +282,37 @@ class Emulator : public CommandHandler {
|
|||||||
std::string filename = arg_vec[0];
|
std::string filename = arg_vec[0];
|
||||||
RETURN_IF_ERROR(rom_.LoadFromFile(filename))
|
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.SetupMemory(rom_);
|
||||||
snes.Init(rom_);
|
snes.Init(rom_);
|
||||||
|
|
||||||
int i = 0;
|
if (!step) {
|
||||||
while (i < 80000) {
|
int i = 0;
|
||||||
snes.Run();
|
while (i < 80000) {
|
||||||
i++;
|
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();
|
return absl::OkStatus();
|
||||||
|
|||||||
Reference in New Issue
Block a user