X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=x6502.h;h=48843fc8a056743815bb425b3538d8377dc143b1;hp=86f4f063d439cc7eca366aef2ec85247698d58bb;hb=af32b6c2f0ed2f1a4582c3e8d7ac704b9c61fa4c;hpb=937bf65b1c80e9394547e5f105664bd26f3671de diff --git a/x6502.h b/x6502.h index 86f4f06..48843fc 100644 --- a/x6502.h +++ b/x6502.h @@ -53,23 +53,87 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); #define FCEU_IQFCOUNT 0x20 #define FCEU_IQTEMP 0x80 -void X6502_Reset(void); -void X6502_Power(void); +#if defined(DEBUG_ASM_6502) +#define TriggerIRQ TriggerIRQ_d +#define TriggerNMI TriggerNMI_d +#define TriggerNMINSF TriggerNMINSF_d +#define X6502_Run X6502_Run_d +#define X6502_Reset X6502_Reset_d +#define X6502_Power X6502_Power_d +#define X6502_AddCycles X6502_AddCycles_d +#define X6502_IRQBegin X6502_IRQBegin_d +#define X6502_IRQEnd X6502_IRQEnd_d +#define X6502_C +#define X6502_A +#define X6502_D + +#elif defined(ASM_6502) +#define TriggerIRQ TriggerIRQ_a +#define TriggerNMI TriggerNMI_a +#define TriggerNMINSF TriggerNMINSF_a +#define X6502_Reset X6502_Reset_a +#define X6502_Power X6502_Power_a +#define X6502_AddCycles X6502_AddCycles_a +#define X6502_IRQBegin X6502_IRQBegin_a +#define X6502_IRQEnd X6502_IRQEnd_a +#define X6502_A + +extern uint32 nes_registers[0x10]; +#define X6502_Run(c) \ +{ \ + int32 cycles = (c) << 4; /* *16 */ \ + if (PAL) cycles -= (c); /* *15 */ \ + nes_registers[7]+=cycles; \ + if (nes_registers[7] > 0) X6502_Run_a(); \ +} + +#else #define X6502_Run(c) \ { \ int32 cycles = (c) << 4; /* *16 */ \ if (PAL) cycles -= (c); /* *15 */ \ X.count+=cycles; \ - if (X.count > 0) X6502_Run_(); \ + if (X.count > 0) X6502_Run_c(); \ } -void X6502_Run_(void); +#define X6502_C +#endif +// c +#ifdef X6502_C +void TriggerIRQ_c(void); +void TriggerNMI_c(void); +void TriggerNMINSF_c(void); +void X6502_Run_c(void); +void X6502_Reset_c(void); +void X6502_Power_c(void); +void FASTAPASS(1) X6502_AddCycles_c(int x); +void FASTAPASS(1) X6502_IRQBegin_c(int w); +void FASTAPASS(1) X6502_IRQEnd_c(int w); +#endif -void TriggerIRQ(void); -void TriggerNMI(void); -void TriggerNMINSF(void); +// asm +#ifdef X6502_A +void TriggerIRQ_a(void); +void TriggerNMI_a(void); +void TriggerNMINSF_a(void); +void X6502_Run_a(void); +void X6502_Reset_a(void); +void X6502_Power_a(void); +void X6502_AddCycles_a(int x); +void X6502_IRQBegin_a(int w); +void X6502_IRQEnd_a(int w); +#endif -void FASTAPASS(1) X6502_AddCycles(int x); -void FASTAPASS(1) X6502_IRQBegin(int w); -void FASTAPASS(1) X6502_IRQEnd(int w); +// debug +#ifdef X6502_D +void TriggerIRQ_d(void); +void TriggerNMI_d(void); +void TriggerNMINSF_d(void); +void X6502_Run_d(int32 c); +void X6502_Reset_d(void); +void X6502_Power_d(void); +void X6502_AddCycles_d(int x); +void X6502_IRQBegin_d(int w); +void X6502_IRQEnd_d(int w); +#endif