]> Shamusworld >> Repos - virtualjaguar/blob - src/include/tom.h
0aff74b9e6e9f50432cc1abdb0e4c04ba9e5e3fc
[virtualjaguar] / src / include / tom.h
1 //
2 // TOM Header file
3 //
4
5 #ifndef __TOM_H__
6 #define __TOM_H__
7
8 #include "jaguar.h"
9
10 #define TOM_VBLANK_DURATION_IN_SCANLINES 25
11
12 #define VIDEO_MODE_16BPP_CRY    0
13 #define VIDEO_MODE_24BPP_RGB    1
14 #define VIDEO_MODE_16BPP_DIRECT 2
15 #define VIDEO_MODE_16BPP_RGB    3
16
17 extern uint32 tom_width;
18 extern uint32 tom_height;
19
20 void tom_init(void);
21 void tom_reset(void);
22 void tom_done(void);
23 unsigned tom_byte_read(unsigned int offset);
24 unsigned tom_word_read(unsigned int offset);
25 void tom_byte_write(unsigned  offset, unsigned  data);
26 void tom_word_write(unsigned  offset, unsigned  data);
27 void tom_exec_scanline(int16 * backbuffer, int32 scanline, bool render);
28 uint32 tom_getVideoModeWidth(void);
29 uint32 tom_getVideoModeHeight(void);
30 uint8 tom_getVideoMode(void);
31 uint8 * tom_get_ram_pointer(void);
32 uint16 tom_get_hdb(void);
33 uint16 tom_get_vdb(void);
34 uint16 tom_get_scanline(void);
35 uint32 tom_getHBlankWidthInPixels(void);
36
37 // Interrupts
38
39 #define IRQ_VBLANK      0
40 #define IRQ_GPU         1
41 #define IRQ_HBLANK  2
42 #define IRQ_OPFLAG  IRQ_HBLANK
43 #define IRQ_TIMER       3
44 #define IRQ_DSP         4
45
46 int     tom_irq_enabled(int irq);
47 uint16 tom_irq_control_reg(void);
48 void tom_set_irq_latch(int irq, int enabled);
49 void tom_pit_exec(uint32 cycles);
50 void tom_set_pending_puck_int(void);
51 void tom_set_pending_timer_int(void);
52 void tom_set_pending_object_int(void);
53 void tom_set_pending_gpu_int(void);
54 void tom_set_pending_video_int(void);
55 void tom_reset_timer(void);
56
57 #endif  // __TOM_H__