|
|
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: extern void reset_frame_rate_hack (void);
20: extern int rpt_available;
21:
22: extern void compute_vsynctime (void);
23: extern void init_eventtab (void);
24: extern void do_cycles_ce (long cycles);
25: extern void do_cycles_ce020 (int clocks);
26: extern void do_cycles_ce020_mem (int clocks);
27: extern void do_cycles_ce000 (int clocks);
28: extern int is_cycle_ce (void);
29: extern int current_hpos (void);
30:
31: static void events_schedule (void);
32:
33: extern unsigned long currcycle, nextevent, is_lastline;
34: typedef void (*evfunc)(void);
35: typedef void (*evfunc2)(uae_u32);
36:
37: typedef unsigned long int evt;
38:
39: struct ev
40: {
41: int active;
42: evt evtime, oldcycles;
43: evfunc handler;
44: };
45:
46: struct ev2
47: {
48: int active;
49: evt evtime;
50: uae_u32 data;
51: evfunc2 handler;
52: };
53:
54: enum {
55: ev_hsync, ev_audio, ev_cia, ev_misc,
56: ev_max
57: };
58:
59: enum {
60: ev2_blitter, ev2_disk, ev2_misc,
61: ev2_max = 12
62: };
63:
64: extern struct ev eventtab[ev_max];
65: extern struct ev2 eventtab2[ev2_max];
66:
67: extern void event2_newevent (int, evt, uae_u32);
68: extern void event2_newevent2 (evt, uae_u32, evfunc2);
69: extern void event2_remevent (int);
70:
71: /*#if 0
72: #ifdef JIT
73: #include "events_jit.h"
74: #else
75: #include "events_normal.h"
76: #endif
77: #else
78: #include "events_jit.h"
79: #endif
80: */
81:
82: #include "events_normal.h"
83:
84:
85: STATIC_INLINE bool cycles_in_range (unsigned long endcycles)
86: {
87: signed long c = get_cycles ();
88: return (signed long)endcycles - c > 0;
89: }
90:
91: #endif //HATARI_EVENT_H
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.