]> Shamusworld >> Repos - virtualjaguar/blob - src/tom.h
8b95a75aaab3f04f84ef9e7948b8e557ebf7d085
[virtualjaguar] / src / tom.h
1 //
2 // TOM Header file
3 //
4
5 #ifndef __TOM_H__
6 #define __TOM_H__
7
8 #include "memory.h"
9
10 #define VIDEO_MODE_16BPP_CRY    0
11 #define VIDEO_MODE_24BPP_RGB    1
12 #define VIDEO_MODE_16BPP_DIRECT 2
13 #define VIDEO_MODE_16BPP_RGB    3
14
15 // Virtual screen size stuff
16
17 // NB: This virtual width is for PWIDTH = 4
18 //#define VIRTUAL_SCREEN_WIDTH            320
19 #define VIRTUAL_SCREEN_WIDTH            340
20 #define VIRTUAL_SCREEN_HEIGHT_NTSC      240
21 #define VIRTUAL_SCREEN_HEIGHT_PAL       256
22
23 // 68000 Interrupt bit positions (enabled at $F000E0)
24
25 enum { IRQ_VIDEO = 0, IRQ_GPU, IRQ_OPFLAG, IRQ_TIMER, IRQ_DSP };
26
27 void TOMInit(void);
28 void TOMReset(void);
29 void TOMDone(void);
30
31 uint8 TOMReadByte(uint32 offset, uint32 who = UNKNOWN);
32 uint16 TOMReadWord(uint32 offset, uint32 who = UNKNOWN);
33 void TOMWriteByte(uint32 offset, uint8 data, uint32 who = UNKNOWN);
34 void TOMWriteWord(uint32 offset, uint16 data, uint32 who = UNKNOWN);
35
36 void TOMExecHalfline(uint16 halfline, bool render);
37 uint32 TOMGetVideoModeWidth(void);
38 uint32 TOMGetVideoModeHeight(void);
39 uint8 TOMGetVideoMode(void);
40 uint8 * TOMGetRamPointer(void);
41 uint16 TOMGetHDB(void);
42 uint16 TOMGetVDB(void);
43
44 int TOMIRQEnabled(int irq);
45 uint16 TOMIRQControlReg(void);
46 void TOMSetIRQLatch(int irq, int enabled);
47 void TOMExecPIT(uint32 cycles);
48 void TOMSetPendingJERRYInt(void);
49 void TOMSetPendingTimerInt(void);
50 void TOMSetPendingObjectInt(void);
51 void TOMSetPendingGPUInt(void);
52 void TOMSetPendingVideoInt(void);
53 void TOMResetPIT(void);
54
55 // Exported variables
56
57 extern uint32 tomWidth;
58 extern uint32 tomHeight;
59 extern uint8 tomRam8[];
60 extern uint32 tomTimerPrescaler;
61 extern uint32 tomTimerDivider;
62 extern int32 tomTimerCounter;
63
64 extern uint32 screenPitch;
65 extern uint32 * screenBuffer;
66
67 #endif  // __TOM_H__