Fixed a crash when reading the DWARF information.
[clinton/Virtual-Jaguar-Rx.git] / 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 //was:340, 330
20 #define VIRTUAL_SCREEN_WIDTH 326
21 #define VIRTUAL_SCREEN_HEIGHT_NTSC 240
22 #define VIRTUAL_SCREEN_HEIGHT_PAL 256
23
24 // 68000 Interrupt bit positions (enabled at $F000E0)
25
26 enum { IRQ_VIDEO = 0, IRQ_GPU, IRQ_OPFLAG, IRQ_TIMER, IRQ_DSP };
27
28 void TOMInit(void);
29 void TOMReset(void);
30 void TOMDone(void);
31
32 uint8_t TOMReadByte(uint32_t offset, uint32_t who = UNKNOWN);
33 uint16_t TOMReadWord(uint32_t offset, uint32_t who = UNKNOWN);
34 void TOMWriteByte(uint32_t offset, uint8_t data, uint32_t who = UNKNOWN);
35 void TOMWriteWord(uint32_t offset, uint16_t data, uint32_t who = UNKNOWN);
36
37 void TOMExecHalfline(uint16_t halfline, bool render);
38 uint32_t TOMGetVideoModeWidth(void);
39 uint32_t TOMGetVideoModeHeight(void);
40 uint8_t TOMGetVideoMode(void);
41 uint8_t * TOMGetRamPointer(void);
42 uint16_t TOMGetHDB(void);
43 uint16_t TOMGetVDB(void);
44 uint16_t TOMGetHC(void);
45 uint16_t TOMGetVP(void);
46 uint16_t TOMGetMEMCON1(void);
47 void TOMDumpIORegistersToLog(void);
48
49
50 int TOMIRQEnabled(int irq);
51 uint16_t TOMIRQControlReg(void);
52 void TOMSetIRQLatch(int irq, int enabled);
53 void TOMExecPIT(uint32_t cycles);
54 void TOMSetPendingJERRYInt(void);
55 void TOMSetPendingTimerInt(void);
56 void TOMSetPendingObjectInt(void);
57 void TOMSetPendingGPUInt(void);
58 void TOMSetPendingVideoInt(void);
59 void TOMResetPIT(void);
60
61 // Exported variables
62
63 extern uint32_t tomWidth;
64 extern uint32_t tomHeight;
65 extern uint8_t tomRam8[];
66 extern uint32_t tomTimerPrescaler;
67 extern uint32_t tomTimerDivider;
68 extern int32_t tomTimerCounter;
69
70 extern uint32_t screenPitch;
71 extern uint32_t * screenBuffer;
72
73 #endif // __TOM_H__