|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
4: * Events
5: * These are best for low-frequency events. Having too many of them,
6: * or using them for events that occur too frequently, can cause massive
7: * slowdown.
8: *
9: * Copyright 1995-1998 Bernd Schmidt
10: */
11:
12: #ifndef HATARI_EVENT_H
13: #define HATARI_EVENT_H
14:
15: #undef EVENT_DEBUG
16:
17: #define do_cycles do_cycles_slow
18:
19: //#include "machdep/rpt.h"
20: #include "rpt.h"
21:
22: extern volatile frame_time_t vsynctime, vsyncmintime;
23: extern void reset_frame_rate_hack (void);
24: extern int rpt_available;
25: extern frame_time_t syncbase;
26:
27: extern void compute_vsynctime (void);
28: extern void init_eventtab (void);
29: extern void do_cycles_ce (long cycles);
30: extern void do_cycles_ce020 (int clocks);
31: extern void do_cycles_ce020_mem (int clocks);
32: extern void do_cycles_ce000 (int clocks);
33: extern int is_cycle_ce (void);
34: extern int current_hpos (void);
35:
36: static void events_schedule (void);
37:
38: extern unsigned long currcycle, nextevent, is_lastline;
39: typedef void (*evfunc)(void);
40: typedef void (*evfunc2)(uae_u32);
41:
42: typedef unsigned long int evt;
43:
44: struct ev
45: {
46: int active;
47: evt evtime, oldcycles;
48: evfunc handler;
49: };
50:
51: struct ev2
52: {
53: int active;
54: evt evtime;
55: uae_u32 data;
56: evfunc2 handler;
57: };
58:
59: enum {
60: ev_hsync, ev_audio, ev_cia, ev_misc,
61: ev_max
62: };
63:
64: enum {
65: ev2_blitter, ev2_disk, ev2_misc,
66: ev2_max = 12
67: };
68:
69: extern struct ev eventtab[ev_max];
70: extern struct ev2 eventtab2[ev2_max];
71:
72: extern void event2_newevent (int, evt, uae_u32);
73: extern void event2_newevent2 (evt, uae_u32, evfunc2);
74: extern void event2_remevent (int);
75:
76: /*#if 0
77: #ifdef JIT
78: #include "events_jit.h"
79: #else
80: #include "events_normal.h"
81: #endif
82: #else
83: #include "events_jit.h"
84: #endif
85: */
86:
87: #include "events_normal.h"
88:
89:
90: STATIC_INLINE bool cycles_in_range (unsigned long endcycles)
91: {
92: signed long c = get_cycles ();
93: return (signed long)endcycles - c > 0;
94: }
95:
96: #endif //HATARI_EVENT_H
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.