Annotation of hatari/src/includes/video.h, revision 1.1.1.8

1.1       root        1: /*
1.1.1.4   root        2:   Hatari - video.h
                      3: 
                      4:   This file is distributed under the GNU Public License, version 2 or at
                      5:   your option any later version. Read the file gpl.txt for details.
1.1       root        6: */
                      7: 
1.1.1.4   root        8: #ifndef HATARI_VIDEO_H
                      9: #define HATARI_VIDEO_H
                     10: 
1.1.1.7   root       11: /*
                     12:   All the following processor timings are based on a bog standard 8MHz 68000 as
                     13:   found in all standard STs:
                     14: 
                     15:   Clock cycles per line (50Hz)      : 512
                     16:   NOPs per scan line (50Hz)         : 128
                     17:   Scan lines per VBL (50Hz)         : 313 (64 at top,200 screen,49 bottom)
                     18: 
                     19:   Clock cycles per line (60Hz)      : 508
                     20:   NOPs per scan line (60Hz)         : 127
                     21:   Scan lines per VBL (60Hz)         : 263
                     22: 
                     23:   Clock cycles per VBL (50Hz)       : 160256
                     24:   NOPs per VBL (50Hz)               : 40064
                     25: 
                     26:   Pixels per clock cycle (low res)  : 1
                     27:   Pixels per clock cycle (med res)  : 2
                     28:   Pixels per clock cycle (high res) : 4
                     29:   Pixels per NOP (low res)          : 4
                     30:   Pixels per NOP (med res)          : 8
                     31:   Pixels per NOP (high res)         : 16
                     32: */
                     33: 
                     34: /* Scan lines per frame */
                     35: #define SCANLINES_PER_FRAME_50HZ 313    /* Number of scan lines per frame in 50 Hz */
                     36: #define SCANLINES_PER_FRAME_60HZ 263    /* Number of scan lines per frame in 60 Hz */
1.1.1.8 ! root       37: #define SCANLINES_PER_FRAME_71HZ 501    /* could also be 500 ? */
1.1.1.7   root       38: #define MAX_SCANLINES_PER_FRAME  313    /* Max. number of scan lines per frame */
                     39: 
                     40: /* Cycles per line */
                     41: #define CYCLES_PER_LINE_50HZ  512
                     42: #define CYCLES_PER_LINE_60HZ  508
1.1.1.8 ! root       43: #define CYCLES_PER_LINE_71HZ  224
1.1.1.7   root       44: 
                     45: /* Vertical border/display enable/disable:
                     46:  * Normal screen starts 63 lines in, top border is 29 lines */
                     47: #define SCREEN_START_HBL_50HZ   63      /* Usually the first line of the displayed screen in 50 Hz */
                     48: #define SCREEN_START_HBL_60HZ   34      /* The first line of the displayed screen in 60 Hz */
1.1.1.8 ! root       49: #define SCREEN_START_HBL_71HZ   34      /* FIXME: 34 is not verified */
1.1.1.7   root       50: #define FIRST_VISIBLE_HBL_50HZ  34      /* At this line we start rendering our screen in 50 Hz */
                     51: #define FIRST_VISIBLE_HBL_60HZ  (34-29) /* At this line we start rendering our screen in 60 Hz (29 = 63-34) */
1.1.1.8 ! root       52: #define FIRST_VISIBLE_HBL_71HZ  34      /* FIXME: 34 is not verified */
1.1.1.7   root       53: 
1.1.1.8 ! root       54: #define SCREEN_HEIGHT_HBL_COLOR  200    /* This is usually the height of the screen */
        !            55: #define SCREEN_HEIGHT_HBL_MONO   400
        !            56: 
        !            57: #define SCREEN_END_HBL_50HZ    ( SCREEN_START_HBL_50HZ + SCREEN_HEIGHT_HBL_COLOR )     /* 263 */
        !            58: #define SCREEN_END_HBL_60HZ    ( SCREEN_START_HBL_60HZ + SCREEN_HEIGHT_HBL_COLOR )     /* 234 */
1.1.1.7   root       59: 
                     60: /* FIXME: SCREEN_START_CYCLE should rather be 52 or so, but this breaks a lot of other things at the moment... */
1.1.1.8 ! root       61: #define SCREEN_START_CYCLE  56          /* Cycle first normal pixel appears on */
        !            62: 
        !            63: #define LINE_REMOVE_TOP_CYCLE    504    /* switch to 60 Hz on line 33 should not occur after cycle 504 to remove top border */
        !            64:                                         /* switch to 50 Hz should occur after cycle 504 on line 33 */
        !            65: #define LINE_REMOVE_BOTTOM_CYCLE 504    /* same value than top border, but on line 262 (50 Hz) or 233 (60 Hz) */
        !            66: 
        !            67: 
        !            68: #define LINE_START_CYCLE_50    56
        !            69: #define LINE_START_CYCLE_60    52
        !            70: #define LINE_START_CYCLE_70    0
        !            71: #define LINE_END_CYCLE_50      376
        !            72: #define LINE_END_CYCLE_60      372
        !            73: #define LINE_END_CYCLE_70      160
        !            74: #define LINE_END_CYCLE_NO_RIGHT        460
        !            75: #define LINE_END_CYCLE_50_2    (LINE_END_CYCLE_50+44*2)        /* used in enchanted lands */
        !            76: #define LINE_END_CYCLE_FULL    512                             /* used in enchanted lands */
        !            77: #define LINE_SCROLL_13_CYCLE_50        20      /* 13 pixels right "hardware" scrolling */
        !            78: #define LINE_SCROLL_9_CYCLE_50 24      /*  9 pixels right "hardware" scrolling */
        !            79: #define LINE_SCROLL_5_CYCLE_50 28      /*  5 pixels right "hardware" scrolling */
        !            80: #define LINE_SCROLL_1_CYCLE_50 32      /*  1 pixels right "hardware" scrolling */
        !            81: #define LINE_LEFT_MID_CYCLE_1  20      /* mid res overscan, shifts display by 0 byte */
        !            82: #define LINE_LEFT_MID_CYCLE_2  28      /* mid res overscan, shifts display by 2 bytes */
        !            83: #define        LINE_EMPTY_CYCLE_70     28      /* switch to hi/lo will create an empty line */
1.1.1.7   root       84: 
                     85: /* Bytes for opened left and right border: */
1.1.1.8 ! root       86: #define BORDERBYTES_NORMAL     160     /* size of a "normal" line */
        !            87: #define BORDERBYTES_LEFT       26
        !            88: #define BORDERBYTES_RIGHT      44
        !            89: #define BORDERBYTES_RIGHT_FULL 22
1.1.1.7   root       90: 
                     91: /* Legacy defines: */
                     92: #define CYCLES_PER_FRAME    (nScanlinesPerFrame*nCyclesPerLine)  /* Cycles per VBL @ 50fps = 160256 */
                     93: 
                     94: 
1.1.1.8 ! root       95: #define VBL_VIDEO_CYCLE_OFFSET         (60+4)
        !            96: #define HBL_VIDEO_CYCLE_OFFSET         (12-12)                 /* cycles after end of current line */
        !            97: #define TIMERB_VIDEO_CYCLE_OFFSET      (96+12)                 /* cycles before end of current line (28 cycles after display off) */
        !            98: #define RESTART_VIDEO_COUNTER_CYCLE    ( (MAX_SCANLINES_PER_FRAME-3) * CYCLES_PER_LINE_50HZ + 48 )
        !            99: 
        !           100: 
        !           101: extern int STRes;
        !           102: extern int TTRes;
        !           103: extern BOOL bUseSTShifter;
1.1       root      104: extern BOOL bUseHighRes;
1.1.1.8 ! root      105: extern int nVBLs;
        !           106: extern int nHBL;
        !           107: extern int nStartHBL;
1.1       root      108: extern int OverscanMode;
1.1.1.7   root      109: extern Uint16 HBLPalettes[];
1.1.1.5   root      110: extern Uint16 *pHBLPalettes;
1.1.1.7   root      111: extern Uint32 HBLPaletteMasks[];
1.1.1.6   root      112: extern Uint32 *pHBLPaletteMasks;
1.1.1.5   root      113: extern Uint32 VideoBase;
1.1.1.3   root      114: extern int nScreenRefreshRate;
1.1       root      115: 
1.1.1.7   root      116: extern int nScanlinesPerFrame;
                    117: extern int nCyclesPerLine;
                    118: 
                    119: 
1.1       root      120: extern void Video_Reset(void);
                    121: extern void Video_MemorySnapShot_Capture(BOOL bSave);
1.1.1.8 ! root      122: extern void Video_GetTTRes(int *width, int *height, int *bpp);
        !           123: extern void Video_StartInterrupts(void);
1.1       root      124: extern void Video_InterruptHandler_VBL(void);
                    125: extern void Video_InterruptHandler_EndLine(void);
                    126: extern void Video_InterruptHandler_HBL(void);
                    127: extern void Video_SetScreenRasters(void);
1.1.1.4   root      128: 
1.1.1.8 ! root      129: extern void Video_ScreenCounter_ReadByte(void);
1.1.1.5   root      130: extern void Video_Sync_ReadByte(void);
                    131: extern void Video_BaseLow_ReadByte(void);
                    132: extern void Video_LineWidth_ReadByte(void);
                    133: extern void Video_ShifterMode_ReadByte(void);
1.1.1.7   root      134: extern void Video_HorScroll_Read(void);
1.1.1.5   root      135: 
1.1.1.6   root      136: extern void Video_ScreenBaseSTE_WriteByte(void);
                    137: extern void Video_ScreenCounter_WriteByte(void);
1.1.1.5   root      138: extern void Video_Sync_WriteByte(void);
1.1.1.7   root      139: extern void Video_LineWidth_WriteByte(void);
1.1.1.5   root      140: extern void Video_Color0_WriteWord(void);
                    141: extern void Video_Color1_WriteWord(void);
                    142: extern void Video_Color2_WriteWord(void);
                    143: extern void Video_Color3_WriteWord(void);
                    144: extern void Video_Color4_WriteWord(void);
                    145: extern void Video_Color5_WriteWord(void);
                    146: extern void Video_Color6_WriteWord(void);
                    147: extern void Video_Color7_WriteWord(void);
                    148: extern void Video_Color8_WriteWord(void);
                    149: extern void Video_Color9_WriteWord(void);
                    150: extern void Video_Color10_WriteWord(void);
                    151: extern void Video_Color11_WriteWord(void);
                    152: extern void Video_Color12_WriteWord(void);
                    153: extern void Video_Color13_WriteWord(void);
                    154: extern void Video_Color14_WriteWord(void);
                    155: extern void Video_Color15_WriteWord(void);
                    156: extern void Video_ShifterMode_WriteByte(void);
1.1.1.7   root      157: extern void Video_HorScroll_Write(void);
1.1.1.8 ! root      158: extern void Video_TTShiftMode_WriteWord(void);
        !           159: extern void Video_TTColorRegs_WriteWord(void);
        !           160: extern void Video_TTColorSTRegs_WriteWord(void);
1.1.1.5   root      161: 
1.1.1.4   root      162: #endif  /* HATARI_VIDEO_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.