Commit | Line | Data |
---|---|---|
cf76e892 JPM |
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__ |