]> Shamusworld >> Repos - stargem2/blob - src/timing.h
More cleanup, chasing down problems with the demo mode
[stargem2] / src / timing.h
1 //
2 // TIMING.H: System timing support functionality
3 //
4 // by James L. Hammons
5 // (C) 2005 Underground Software
6 //
7
8 #ifndef __TIMING_H__
9 #define __TIMING_H__
10
11 #include "types.h"
12
13 // Note that these are NTSC timings:
14
15 //#define RISC_CYCLE_IN_USEC     0.03760684198
16 //#define M68K_CYCLE_IN_USEC     (RISC_CYCLE_IN_USEC * 2)
17 //#define HORIZ_PERIOD_IN_USEC   63.5555
18 //#define M6502_CYCLE_IN_USEC      0.9765625
19
20 //#define MASTER_CLOCK          (12000000)
21 //#define SOUND_CLOCK                   (3579000)
22 //      MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4)
23 //      MDRV_CPU_PROGRAM_MAP(defender_map)
24 //      MDRV_CPU_ADD("soundcpu", M6808, SOUND_CLOCK)
25 //      MDRV_CPU_PROGRAM_MAP(defender_sound_map)
26
27 #define M6808_CLOCK_SPEED_IN_HZ         (3579000.0 / 4.0)
28 #define M6809_CLOCK_SPEED_IN_HZ         (1000000.0)
29
30 // Actually, it's 1.1176306230790722 usec
31 //#define M6808_CYCLE_IN_USEC      (0.9765625)
32 #define M6808_CYCLE_IN_USEC             (1000000.0 / M6808_CLOCK_SPEEK_IN_HZ)
33 #define M6809_CYCLE_IN_USEC             (1000000.0 / M6809_CLOCK_SPEED_IN_HZ)
34
35 //#define USEC_TO_RISC_CYCLES(u) (uint32)(((u) / RISC_CYCLE_IN_USEC) + 0.5)
36 //#define USEC_TO_M68K_CYCLES(u) (uint32)(((u) / M68K_CYCLE_IN_USEC) + 0.5)
37 //#define USEC_TO_M6502_CYCLES(u)  (uint32)(((u) / M6502_CYCLE_IN_USEC) + 0.5)
38 #define USEC_TO_M6808_CYCLES(u)  (uint32)(((u) / M6808_CYCLE_IN_USEC) + 0.5)
39 #define USEC_TO_M6809_CYCLES(u)  (uint32)(((u) / M6809_CYCLE_IN_USEC) + 0.5)
40
41 void InitializeEventList(void);
42 void SetCallbackTime(void (* callback)(void), double time);
43 void RemoveCallback(void (* callback)(void));
44 void AdjustCallbackTime(void (* callback)(void), double time);
45 double GetTimeToNextEvent(void);
46 void HandleNextEvent(void);
47
48 #endif  // __TIMING_H__