#pragma once #include #include "interrupts.h" namespace sm83 { #define SM83_OPTION_STOP_ON_INVALID 0 #define SM83_OPTION_BREAK_ON_INTERRUPT 1 #define SM83_OPTION_BREAK_ON_RET 2 #define SM83_NUM_OPTIONS 3 void reset(); void setClock(uint32_t freq); uint32_t getClock(); void processInterrupts(); uint32_t step(); uint8_t *getRegs(); uint16_t getAF(); uint16_t getBC(); uint16_t getDE(); uint16_t getHL(); uint16_t getSP(); uint16_t getPC(); uint8_t getI(); uint8_t getR(); void setPC(const uint16_t addr); const bool getOption(const int option); void setOption(const int option, const bool value); void toggleOption(const int option); }