AppleWin/source/Video.h

132 lines
4.0 KiB
C
Raw Normal View History

2006-02-25 20:50:29 +00:00
#pragma once
// Types ____________________________________________________________
// NOTE: KEEP IN SYNC: VideoType_e g_aVideoChoices g_apVideoModeDesc
enum VideoType_e
{
VT_MONO_CUSTOM
, VT_COLOR_STANDARD
, VT_COLOR_TEXT_OPTIMIZED
, VT_COLOR_TVEMU
, VT_COLOR_HALF_SHIFT_DIM
2011-01-11 07:01:51 +00:00
, VT_COLOR_AUTHENTIC
// , VT_MONO_AUTHENTIC -- been replaced with 3 mono modes
2011-01-11 07:01:51 +00:00
, VT_MONO_HALFPIXEL_REAL
, VT_MONO_AMBER
, VT_MONO_GREEN
, VT_MONO_WHITE
2011-01-11 07:01:51 +00:00
, VT_MONO_COLORIZE
2011-01-08 21:29:27 +00:00
, VT_MONO_HALFPIXEL_COLORIZE
2011-01-08 03:35:37 +00:00
, VT_MONO_HALFPIXEL_75
, VT_MONO_HALFPIXEL_95
, VT_MONO_HALFPIXEL_EMBOSS
, VT_MONO_HALFPIXEL_FAKE
, NUM_VIDEO_MODES
};
extern TCHAR g_aVideoChoices[];
extern char *g_apVideoModeDesc[ NUM_VIDEO_MODES ];
2006-02-25 20:50:29 +00:00
enum VideoFlag_e
{
VF_80COL = 0x00000001,
VF_DHIRES = 0x00000002,
VF_HIRES = 0x00000004,
VF_MASK2 = 0x00000008,
VF_MIXED = 0x00000010,
VF_PAGE2 = 0x00000020,
VF_TEXT = 0x00000040
};
2006-07-02 09:56:50 +00:00
enum AppleFont_e
{
// 40-Column mode is 1x Zoom (default)
// 80-Column mode is ~0.75x Zoom (7 x 16)
// Tiny mode is 0.5 zoom (7x8) for debugger
2006-07-02 09:56:50 +00:00
APPLE_FONT_WIDTH = 14, // in pixels
APPLE_FONT_HEIGHT = 16, // in pixels
// Each cell has a reserved aligned pixel area (grid spacing)
2006-07-02 09:56:50 +00:00
APPLE_FONT_CELL_WIDTH = 16,
APPLE_FONT_CELL_HEIGHT = 16,
// The bitmap contains 3 regions
// Each region is 256x256 pixels = 16x16 chars
APPLE_FONT_X_REGIONSIZE = 256, // in pixelx
APPLE_FONT_Y_REGIONSIZE = 256, // in pixels
// Starting Y offsets (pixels) for the regions
APPLE_FONT_Y_APPLE_2PLUS = 0, // ][+
APPLE_FONT_Y_APPLE_80COL = 256, // //e (inc. Mouse Text)
APPLE_FONT_Y_APPLE_40COL = 512, // ][
};
// Globals __________________________________________________________
extern HBITMAP g_hLogoBitmap;
2011-01-08 21:29:27 +00:00
extern BOOL g_bGraphicsMode;
2009-02-14 03:49:22 +00:00
extern COLORREF monochrome; // saved
2009-02-16 19:27:07 +00:00
extern DWORD g_eVideoType; // saved
2009-02-14 03:49:22 +00:00
extern DWORD g_uHalfScanLines; // saved
2009-02-16 19:27:07 +00:00
extern LPBYTE g_pFramebufferbits;
extern int g_nAltCharSetOffset;
extern int g_bVideoMode; // g_bVideoMode
2011-01-07 09:23:16 +00:00
typedef bool (*VideoUpdateFuncPtr_t)(int,int,int,int,int);
// Prototypes _______________________________________________________
2006-02-25 20:50:29 +00:00
void CreateColorMixMap();
BOOL VideoApparentlyDirty ();
void VideoBenchmark ();
void VideoCheckPage (BOOL);
void VideoChooseColor ();
void VideoDestroy ();
void VideoDrawLogoBitmap( HDC hDstDC );
2006-02-25 20:50:29 +00:00
void VideoDisplayLogo ();
BOOL VideoHasRefreshed ();
void VideoInitialize ();
void VideoRealizePalette (HDC);
2011-01-07 09:23:16 +00:00
VideoUpdateFuncPtr_t VideoRedrawScreen ();
VideoUpdateFuncPtr_t VideoRefreshScreen ();
2006-02-25 20:50:29 +00:00
void VideoReinitialize ();
void VideoResetState ();
WORD VideoGetScannerAddress(bool* pbVblBar_OUT, const DWORD uExecutedCycles);
bool VideoGetVbl(DWORD uExecutedCycles);
2006-02-25 20:50:29 +00:00
void VideoUpdateFlash();
bool VideoGetSW80COL();
DWORD VideoGetSnapshot(SS_IO_Video* pSS);
DWORD VideoSetSnapshot(SS_IO_Video* pSS);
2008-08-25 05:25:27 +00:00
extern bool g_bVideoDisplayPage2;
extern bool g_VideoForceFullRedraw;
void _Video_Dirty();
void _Video_RedrawScreen( VideoUpdateFuncPtr_t update, bool bMixed = false );
void _Video_SetupBanks( bool bBank2 );
bool Update40ColCell (int x, int y, int xpixel, int ypixel, int offset);
bool Update80ColCell (int x, int y, int xpixel, int ypixel, int offset);
bool UpdateLoResCell (int x, int y, int xpixel, int ypixel, int offset);
bool UpdateDLoResCell (int x, int y, int xpixel, int ypixel, int offset);
bool UpdateHiResCell (int x, int y, int xpixel, int ypixel, int offset);
bool UpdateDHiResCell (int x, int y, int xpixel, int ypixel, int offset);
extern bool g_bDisplayPrintScreenFileName;
2008-08-31 04:31:35 +00:00
void Video_ResetScreenshotCounter( char *pDiskImageFileName );
enum VideoScreenShot_e
{
SCREENSHOT_560x384 = 0,
SCREENSHOT_280x192
};
void Video_TakeScreenShot( int iScreenShotType );
// Win32/MSVC: __stdcall
BYTE VideoCheckMode (WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG uExecutedCycles);
BYTE VideoCheckVbl (WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG uExecutedCycles);
BYTE VideoSetMode (WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG uExecutedCycles);