2018-09-12 06:30:44 -04:00

53 lines
1.4 KiB

#ifndef __EMULATOR_H
#define __EMULATOR_H
#include <stdint.h>
/* Accessing memory */
extern uint8_t read6502(uint16_t address);
extern void write6502(uint16_t address, uint8_t value);
/* Call this once before you begin execution. */
void reset6502();
/* Execute 6502 code up to the next specified count of clock ticks. */
void exec6502(uint32_t tickcount);
/* Execute a single instruction. */
void step6502();
/* Trigger a hardware IRQ in the 6502 core. */
void irq6502();
/* Trigger an NMI in the 6502 core. */
void nmi6502();
/* Pass a pointer to a void function taking no parameters. This will
cause Fake6502 to call that function once after each emulated
instruction. */
void hookexternal(void *funcptr);
/* Useful variables in this emulator */
/* Running total of the emulated cycle count. */
extern uint32_t clockticks6502;
/* Running total of the total emulated instruction count. This is not
related to clock cycle timing. */
extern uint32_t instructions;
/* When this is defined, undocumented opcodes are handled otherwise,
they're simply treated as NOPs. */
/* When this is defined, the binary-coded decimal (BCD) status flag
is not honored by ADC and SBC. The 2A03 CPU in the Nintendo
Entertainment System does not support BCD operation. */
#undef NES_CPU
/* 6502 CPU registers */
extern uint16_t pc;
extern uint8_t sp, a, x, y, status;
#endif /* __EMULATOR_H */