Files
gameboy/sm83.h
Raimon Zamora 44f4f1a85b - [FIX] Les interrupcions també han d'executar-se al escriure directament en 0xFF0F (IE)
- [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?)
2025-01-27 14:04:09 +01:00

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);
}