#ifndef GRAPHICS_MONITOR_H #define GRAPHICS_MONITOR_H /* Copyright © 1995-2010, The AROS Development Team. All rights reserved. $Id$ Desc: Monitor definitions Lang: english */ #ifndef EXEC_SEMAPHORES_H # include #endif #ifndef GRAPHICS_GFX_H # include #endif #ifndef GRAPHICS_GFXNODES_H # include #endif #define DEFAULT_MONITOR_NAME "default.monitor" #define NTSC_MONITOR_NAME "ntsc.monitor" #define PAL_MONITOR_NAME "pal.monitor" #define VGA_MONITOR_NAME "vga.monitor" struct MonitorSpec { struct ExtendedNode ms_Node; UWORD ms_Flags; /* Flags, see below */ LONG ratioh; LONG ratiov; UWORD total_rows; /* Total number of scanlines per frame */ UWORD total_colorclocks; /* Total number of color clocks per line (in 1/280 ns units) */ UWORD DeniseMaxDisplayColumn; UWORD BeamCon0; /* Value for beamcon0 Amiga(tm) chipset register */ UWORD min_row; struct SpecialMonitor * ms_Special; /* Synchro signal timings description (optional) */ UWORD ms_OpenCount; /* Driver open count */ LONG (* ms_transform)(); LONG (* ms_translate)(); LONG (* ms_scale)(); UWORD ms_xoffset; UWORD ms_yoffset; struct Rectangle ms_LegalView; /* Allowed range for view positioning (right-bottom position included) */ LONG (* ms_maxoscan)(); LONG (* ms_videoscan)(); UWORD DeniseMinDisplayColumn; ULONG DisplayCompatible; struct List DisplayInfoDataBase; struct SignalSemaphore DisplayInfoDataBaseSemaphore; LONG (* ms_MrgCop)(); /* Driver call vectors, unused by AROS */ LONG (* ms_LoadView)(); LONG (* ms_KillView)(); }; /* An alias for pointer to associated sync object, AROS-specific */ #define ms_Object DisplayInfoDataBase.lh_Head /* ms_Flags */ #define MSB_REQUEST_NTSC 0 #define MSF_REQUEST_NTSC (1<<0) #define MSB_REQUEST_PAL 1 #define MSF_REQUEST_PAL (1<<1) #define MSB_REQUEST_SPECIAL 2 #define MSF_REQUEST_SPECIAL (1<<2) #define MSB_REQUEST_A2024 3 #define MSF_REQUEST_A2024 (1<<3) #define MSB_DOUBLE_SPRITES 4 #define MSF_DOUBLE_SPRITES (1<<4) #define STANDARD_MONITOR_MASK (MSF_REQUEST_NTSC | MSF_REQUEST_PAL) #define TO_MONITOR 0 #define FROM_MONITOR 1 #define STANDARD_XOFFSET 9 #define STANDARD_YOFFSET 0 /* Some standard/default constants for Amiga(tm) chipset */ #define STANDARD_NTSC_ROWS 262 #define MIN_NTSC_ROW 21 #define STANDARD_PAL_ROWS 312 #define MIN_PAL_ROW 29 #define STANDARD_NTSC_BEAMCON 0x0000 #define STANDARD_PAL_BEAMCON 0x0020 #define SPECIAL_BEAMCON (VARVBLANK | VARHSYNC | VARVSYNC | VARBEAM | VSYNCTRUE | LOLDIS | CSBLANK) #define STANDARD_DENISE_MIN 93 #define STANDARD_DENISE_MAX 455 #define STANDARD_COLORCLOCKS 226 #define STANDARD_VIEW_X 0x81 #define STANDARD_VIEW_Y 0x2C #define STANDARD_HBSTRT 0x06 #define STANDARD_HBSTOP 0x2C #define STANDARD_HSSTRT 0x0B #define STANDARD_HSSTOP 0x1C #define STANDARD_VBSTRT 0x0122 #define STANDARD_VBSTOP 0x1066 #define STANDARD_VSSTRT 0x02A6 #define STANDARD_VSSTOP 0x03AA #define VGA_COLORCLOCKS (STANDARD_COLORCLOCKS / 2) #define VGA_TOTAL_ROWS (STANDARD_NTSC_ROWS * 2) #define VGA_DENISE_MIN 59 #define MIN_VGA_ROW 29 #define VGA_HBSTRT 0x08 #define VGA_HBSTOP 0x1E #define VGA_HSSTRT 0x0E #define VGA_HSSTOP 0x1C #define VGA_VBSTRT 0x0000 #define VGA_VBSTOP 0x0CCD #define VGA_VSSTRT 0x0153 #define VGA_VSSTOP 0x0235 #define BROADCAST_BEAMCON (LOLDIS | CSBLANK) #define BROADCAST_HBSTRT 0x01 #define BROADCAST_HBSTOP 0x27 #define BROADCAST_HSSTRT 0x06 #define BROADCAST_HSSTOP 0x17 #define BROADCAST_VBSTRT 0x0000 #define BROADCAST_VBSTOP 0x1C40 #define BROADCAST_VSSTRT 0x02A6 #define BROADCAST_VSSTOP 0x054C #define RATIO_FIXEDPART 4 #define RATIO_UNITY (1<<4) struct AnalogSignalInterval { UWORD asi_Start; UWORD asi_Stop; }; struct SpecialMonitor { struct ExtendedNode spm_Node; UWORD spm_Flags; /* Reserved, set to 0 */ LONG (* do_monitor)(struct MonitorSpec *); /* Driver call vector - set up a video mode */ LONG (* reserved1)(); /* Private data, do not touch */ LONG (* reserved2)(); LONG (* reserved3)(); struct AnalogSignalInterval hblank; /* Signal timings by themselves */ struct AnalogSignalInterval vblank; struct AnalogSignalInterval hsync; struct AnalogSignalInterval vsync; }; #endif /* GRAPHICS_MONITOR_H */