X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=x6502.h;h=56d9448064e9d45d6c47e372450435225783faab;hp=1b63a2f46ba182ad4f275be900c52e6c31833990;hb=892b1f6c68346fa00dc3029ab8bd31178e730509;hpb=c0bf6f9f02a2b6afb961a7e9195e2168d7e9cecf diff --git a/x6502.h b/x6502.h index 1b63a2f..56d9448 100644 --- a/x6502.h +++ b/x6502.h @@ -52,11 +52,12 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); #define FCEU_IQDPCM 0x10 #define FCEU_IQFCOUNT 0x20 #define FCEU_IQTEMP 0x80 +// from 0.98.15 +#define FCEU_IQEXT2 0x02 #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 @@ -64,6 +65,7 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); #define X6502_IRQBegin X6502_IRQBegin_d #define X6502_IRQEnd X6502_IRQEnd_d #define X6502_Rebase X6502_Rebase_d +#define X6502_GetCycleCount() g_cnt #define X6502_C #define X6502_A #define X6502_D @@ -71,24 +73,26 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); #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_IRQBegin X6502_IRQBegin_a +//#define X6502_IRQEnd X6502_IRQEnd_a +#define X6502_IRQBegin(w) nes_registers[4]|=w<<8 +#define X6502_IRQEnd(w) nes_registers[4]&=~(w<<8) #define X6502_Rebase X6502_Rebase_a +#define X6502_GetCycleCount() ((int32)nes_registers[7]>>16) #define X6502_A #define X6502_Run(c) \ { \ int32 cycles = (c) << 4; /* *16 */ \ if (PAL) cycles -= (c); /* *15 */ \ - nes_registers[7]+=cycles; \ - if (nes_registers[7] > 0) { \ - cycles = (int32)nes_registers[7]; \ + nes_registers[7]+=cycles<<16; \ + cycles=(int32)nes_registers[7]>>16; \ + if (cycles > 0) { \ X6502_Run_a(); \ - cycles -= (int32)nes_registers[7]; \ + cycles -= (int32)nes_registers[7]>>16; \ asmcpu_update(cycles); \ } \ } @@ -96,13 +100,13 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); #else #define TriggerIRQ TriggerIRQ_c #define TriggerNMI TriggerNMI_c -#define TriggerNMINSF TriggerNMINSF_c #define X6502_Reset X6502_Reset_c #define X6502_Power X6502_Power_c #define X6502_AddCycles X6502_AddCycles_c #define X6502_IRQBegin X6502_IRQBegin_c #define X6502_IRQEnd X6502_IRQEnd_c #define X6502_Rebase(...) +#define X6502_GetCycleCount() X.count #define X6502_C #define X6502_Run(c) \ @@ -117,9 +121,9 @@ extern void FP_FASTAPASS(1) (*MapIRQHook)(int a); // c #ifdef X6502_C +extern int32 g_cnt; 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); @@ -134,7 +138,6 @@ extern uint32 nes_registers[0x10]; extern uint32 pc_base; 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); @@ -148,7 +151,6 @@ void X6502_Rebase_a(void); #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);