#include "atari2600.h" #include "6502m.h" #include "mem.h" #include "tia.h" #include "pia.h" #include "display.h" #include "speaker.h" //#include "keyboard.h" //#include "z80debugger.h" namespace atari2600 { static bool should_exit = false; static bool paused = false; void init() { paused = false; m6502::reset(); mem::reset(); tia::reset(); pia::reset(); display::init(); speaker::init(); //speaker::register_source(psg::get_sample); //speaker::register_source(keyboard::get_sample); } void quit() { should_exit = true; } void step() { uint8_t t_states; uint16_t pc = m6502::getPC(); // if (z80debugger::isbreak(pc, 9)) { // msx::pause(); // z80debugger::show(); // return; // } else { bool instruction_done = false; while (!instruction_done) { if (!tia::is_rdy_low()) { instruction_done = m6502::tick(); } else { instruction_done = true; } tia::tick(); tia::tick(); tia::tick(); pia::tick(); t_states++; } //speaker::update(t_states); // } } void pause() { display::setTitle(" (paused)"); paused = true; display::redraw(); } void resume() { display::setTitle(""); paused = false; } bool is_paused() { return paused; } bool is_quitting() { return should_exit; } }