- [FIX] Els 4 bits menys significants del registre F han de ser sempre 0 - [FIX] Arreglats (crec? estaven mal?) els flags de half carry de algunes operacions aritmètiques - [FIX] Crec que DAA ara va com toca? (potser? abans no?)
47 lines
973 B
C++
47 lines
973 B
C++
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
namespace sm83
|
|
{
|
|
#define INTERRUPT_VBLANK 0x01
|
|
#define INTERRUPT_LCD 0x02
|
|
#define INTERRUPT_TIMER 0x04
|
|
#define INTERRUPT_SERIAL 0x08
|
|
#define INTERRUPT_JOYPAD 0x10
|
|
|
|
#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();
|
|
void interrupt(uint8_t type);
|
|
|
|
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);
|
|
} |