X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftom.h;h=ed89b93cf41b9ae87fc1fedf743ed62ed4622005;hb=62587015fb12ec54b1702bfa17077e4b8af44b19;hp=faaf4f7c9ecf01ff2158b1e1a75e5edff4be0da3;hpb=2ae315f25e623cc8279d3c9012a3a166d86684c2;p=virtualjaguar diff --git a/src/tom.h b/src/tom.h index faaf4f7..ed89b93 100644 --- a/src/tom.h +++ b/src/tom.h @@ -5,54 +5,66 @@ #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); +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__