]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/tom.h
Added Memory Track support. One small step towards full CD-ROM support.
[virtualjaguar] / src / tom.h
index faaf4f7c9ecf01ff2158b1e1a75e5edff4be0da3..4ac5736b4192a43eb22767c3be1fd67002c98002 100644 (file)
--- a/src/tom.h
+++ b/src/tom.h
@@ -5,54 +5,69 @@
 #ifndef __TOM_H__
 #define __TOM_H__
 
-#include "jaguar.h"
+#include "memory.h"
 
 #define VIDEO_MODE_16BPP_CRY   0
 #define VIDEO_MODE_24BPP_RGB   1
 #define VIDEO_MODE_16BPP_DIRECT 2
 #define VIDEO_MODE_16BPP_RGB   3
 
+// Virtual screen size stuff
+
+// NB: This virtual width is for PWIDTH = 4
+//#define VIRTUAL_SCREEN_WIDTH            320
+//was:340, 330
+#define VIRTUAL_SCREEN_WIDTH            326
+#define VIRTUAL_SCREEN_HEIGHT_NTSC      240
+#define VIRTUAL_SCREEN_HEIGHT_PAL       256
+
 // 68000 Interrupt bit positions (enabled at $F000E0)
 
-enum { IRQ_VBLANK = 0, IRQ_GPU, IRQ_OPFLAG, IRQ_TIMER, IRQ_DSP };
-
-void tom_init(void);
-void tom_reset(void);
-void tom_done(void);
-
-uint8 TOMReadByte(uint32 offset, uint32 who = UNKNOWN);
-uint16 TOMReadWord(uint32 offset, uint32 who = UNKNOWN);
-void TOMWriteByte(uint32 offset, uint8 data, uint32 who = UNKNOWN);
-void TOMWriteWord(uint32 offset, uint16 data, uint32 who = UNKNOWN);
-
-//void TOMExecScanline(int16 * backbuffer, int32 scanline, bool render);
-void TOMExecScanline(uint16 scanline, bool render);
-uint32 tom_getVideoModeWidth(void);
-uint32 tom_getVideoModeHeight(void);
-uint8 tom_getVideoMode(void);
-uint8 * tom_get_ram_pointer(void);
-uint16 tom_get_hdb(void);
-uint16 tom_get_vdb(void);
-//uint16 tom_get_scanline(void);
-//uint32 tom_getHBlankWidthInPixels(void);
-
-int    tom_irq_enabled(int irq);
-uint16 tom_irq_control_reg(void);
-void tom_set_irq_latch(int irq, int enabled);
-void TOMExecPIT(uint32 cycles);
-void tom_set_pending_jerry_int(void);
-void tom_set_pending_timer_int(void);
-void tom_set_pending_object_int(void);
-void tom_set_pending_gpu_int(void);
-void tom_set_pending_video_int(void);
-void TOMResetPIT(void);
+enum { IRQ_VIDEO = 0, IRQ_GPU, IRQ_OPFLAG, IRQ_TIMER, IRQ_DSP };
+
+void TOMInit(void);
+void TOMReset(void);
+void TOMDone(void);
+
+uint8_t TOMReadByte(uint32_t offset, uint32_t who = UNKNOWN);
+uint16_t TOMReadWord(uint32_t offset, uint32_t who = UNKNOWN);
+void TOMWriteByte(uint32_t offset, uint8_t data, uint32_t who = UNKNOWN);
+void TOMWriteWord(uint32_t offset, uint16_t data, uint32_t who = UNKNOWN);
 
-//uint32 TOMGetSDLScreenPitch(void);
-void TOMResetBackbuffer(uint32 * backbuffer);
+void TOMExecHalfline(uint16_t halfline, bool render);
+uint32_t TOMGetVideoModeWidth(void);
+uint32_t TOMGetVideoModeHeight(void);
+uint8_t TOMGetVideoMode(void);
+uint8_t * TOMGetRamPointer(void);
+uint16_t TOMGetHDB(void);
+uint16_t TOMGetVDB(void);
+uint16_t TOMGetHC(void);
+uint16_t TOMGetVP(void);
+uint16_t TOMGetMEMCON1(void);
+void TOMDumpIORegistersToLog(void);
+
+
+int TOMIRQEnabled(int irq);
+uint16_t TOMIRQControlReg(void);
+void TOMSetIRQLatch(int irq, int enabled);
+void TOMExecPIT(uint32_t cycles);
+void TOMSetPendingJERRYInt(void);
+void TOMSetPendingTimerInt(void);
+void TOMSetPendingObjectInt(void);
+void TOMSetPendingGPUInt(void);
+void TOMSetPendingVideoInt(void);
+void TOMResetPIT(void);
 
 // Exported variables
 
-extern uint32 tom_width;
-extern uint32 tom_height;
+extern uint32_t tomWidth;
+extern uint32_t tomHeight;
+extern uint8_t tomRam8[];
+extern uint32_t tomTimerPrescaler;
+extern uint32_t tomTimerDivider;
+extern int32_t tomTimerCounter;
+
+extern uint32_t screenPitch;
+extern uint32_t * screenBuffer;
 
 #endif // __TOM_H__