void X6502_Init(void) { int x; memset((void *)&X,0,sizeof(X)); for(x=0;x<256;x++) if(!x) ZNTable[x]=Z_FLAG; else if (x&0x80) ZNTable[x]=N_FLAG; else ZNTable[x]=0; #ifdef WANT_DEBUGGER X6502_Debug(0,0,0); #endif }
static void FlushBreakPoints(int type) { std::vector<NES_BPOINT>::iterator bpit; if(type == BPOINT_READ) BreakPointsRead.clear(); else if(type == BPOINT_WRITE) BreakPointsWrite.clear(); else if(type == BPOINT_PC) BreakPointsPC.clear(); X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); }
static void AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) { NES_BPOINT tmp; tmp.A[0] = A1; tmp.A[1] = A2; tmp.type =type; if(type == BPOINT_READ) BreakPointsRead.push_back(tmp); else if(type == BPOINT_WRITE) BreakPointsWrite.push_back(tmp); else if(type == BPOINT_PC) BreakPointsPC.push_back(tmp); X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); }
static void RedoHooks(void) { X6502_Debug((CPUHook || BTEnabled) ? CPUHandler : NULL, (CPUHook && BreakPointsRead.size()) ? ReadHandler : NULL, (CPUHook && BreakPointsWrite.size()) ? WriteHandler : 0); }
static void SetCPUCallback(void (*callb)(uint32 PC)) { CPUHook = callb; X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); }