BizHawk/BizHawk.Emulation/CPUs/MOS 6502X/MOS6502XNative/MOS6502X.h

54 lines
1.4 KiB
C
Raw Normal View History

#ifndef MOS6502X_H
#define MOS6502X_H
#include "ints.h"
class MOS6502X
{
public:
bool BCD_Enabled;
bool debug;
bool throw_unhandled;
byte A;
byte X;
byte Y;
byte P;
ushort PC;
byte S;
bool IRQ;
bool NMI;
int TotalExecutedCycles;
byte (__cdecl *ReadMemory)(ushort);
byte (__cdecl *DummyReadMemory)(ushort);
void (__cdecl *WriteMemory)(ushort, byte);
//opcode bytes.. theoretically redundant with the temp variables? who knows.
int opcode;
byte opcode2, opcode3;
int ea, alu_temp; //cpu internal temp variables
int mi; //microcode index
bool iflag_pending; //iflag must be stored after it is checked in some cases (CLI and SEI).
//tracks whether an interrupt condition has popped up recently.
//not sure if this is real or not but it helps with the branch_irq_hack
bool interrupt_pending;
bool branch_irq_hack; //see Uop.RelBranch_Stage3 for more details
__declspec(dllexport) void ExecuteOne();
void FetchDummy();
__declspec(dllexport) void Reset();
__declspec(dllexport) void NESSoftReset();
__declspec(dllexport) void SetTrampolines(byte (__cdecl *ReadMemory)(ushort), byte (__cdecl *DummyReadMemory)(ushort), void (__cdecl *WriteMemory)(ushort, byte));
};
extern "C" __declspec(dllexport) void* __cdecl Create();
extern "C" __declspec(dllexport) void __cdecl Destroy(void *);
#endif // MOS6502X_H