base:built_in_screen_modes
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:built_in_screen_modes [2015-04-17 04:30] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | (Pasted from the Vic Article, and comments by Oswald/ | ||
+ | |||
+ | ====== Hires text mode ====== | ||
+ | |||
+ | // | ||
+ | |||
+ | In this mode (as in all text modes), the VIC reads 8 bit character pointers | ||
+ | from the video matrix that specify the address of the dot matrix of the | ||
+ | character in the character generator. A character set of 256 characters is | ||
+ | available, each consisting of 8×8 pixels which are stored in 8 successive | ||
+ | bytes in the character generator. | ||
+ | |||
+ | In standard text mode, every bit in the character generator directly | ||
+ | corresponds to one pixel on the screen. The foreground color is given by | ||
+ | the color nybble from the video matrix for each character, the background | ||
+ | color is set globally with register $d021. | ||
+ | |||
+ | < | ||
+ | | ||
+ | | " | ||
+ | | " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== Multicolor text mode ====== | ||
+ | |||
+ | // | ||
+ | |||
+ | This mode allows for displaying four-colored characters at the cost of | ||
+ | horizontal resolution. If bit 3 of the corresponding $d800 color is zero, the character is | ||
+ | displayed as in standard text mode with only the colors 0-7 available for | ||
+ | the foreground. If bit 3 of the corresponding $d800 color is 1, each two adjacent bits of the dot matrix form one pixel. By this means, the resolution of a character of reduced to | ||
+ | 4×8 (the pixels are twice as wide, so the total width of the characters | ||
+ | doesn' | ||
+ | |||
+ | //It is interesting that not only the bit combination " | ||
+ | regarded as " | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | " | ||
+ | | " | ||
+ | | " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== Hires bitmap mode ====== | ||
+ | |||
+ | // | ||
+ | |||
+ | In this mode (as in all bitmap modes), the VIC reads the graphics data from | ||
+ | a 320×200 bitmap in which every bit corresponds to one pixel on the screen. | ||
+ | The data from the screen memory is used for color information. As the screen | ||
+ | memory is still only a 40×25 matrix, you can only specify the colors for | ||
+ | blocks of 8×8 pixels individually (sort of a YC 8:1 format). As the | ||
+ | designers of the VIC wanted to realize the bitmap mode with as little | ||
+ | additional circuitry as possible (the VIC-I didn't have a bitmap mode), the | ||
+ | arrangement of the bitmap in memory is somewhat weird: In contrast to | ||
+ | modern video chips that read the bitmap in a linear fashion from memory, | ||
+ | the VIC forms an 8×8 pixel block on the screen from 8 successive bytes of | ||
+ | the bitmap. The video matrix and the bitmap can be moved in memory with the | ||
+ | bits VM10-VM13 and CB13 of register $d018. | ||
+ | |||
+ | In standard bitmap mode, every bit in the bitmap directly corresponds to | ||
+ | one pixel on the screen. Foreground and background color can be arbitrarily | ||
+ | set for every 8×8 block. | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== Multicolor bitmap mode ====== | ||
+ | |||
+ | // | ||
+ | |||
+ | Similar to the multicolor text mode, this mode also forms (twice as wide) | ||
+ | pixels by combining two adjacent bits. So the resolution is reduced to | ||
+ | 160×200 pixels. | ||
+ | |||
+ | //The bit combination " | ||
+ | priority and collision detection, as in multicolor text mode.// | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | " | ||
+ | | " | ||
+ | | " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== ECM text mode (aka ' | ||
+ | |||
+ | // | ||
+ | |||
+ | This text mode is the same as the standard text mode, but it allows the | ||
+ | selection of one of four background colors for every single character. The | ||
+ | selection is done with the upper two bits of the character pointer. This, | ||
+ | however, reduces the character set from 256 to 64 characters. | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== Invalid text mode (ECM/ | ||
+ | |||
+ | //Setting the ECM and MCM bits simultaneously// | ||
+ | " | ||
+ | Nevertheless, | ||
+ | graphics data that can trigger sprite collisions even in this mode. By | ||
+ | using sprite collisions, you can also read out the generated data (but you | ||
+ | cannot see anything, the screen is black). You can, however, only | ||
+ | distinguish foreground and background pixels as you cannot get color | ||
+ | information from sprite collisions. | ||
+ | |||
+ | The generated graphics is similar to that of the multicolor text mode, but | ||
+ | the character set is limited to 64 characters as in ECM mode. | ||
+ | |||
+ | |||
+ | ====== Invalid bitmap mode 1 (ECM/ | ||
+ | |||
+ | //(Ie, setting ECM mode and Bitmap mode on at the same time)// | ||
+ | |||
+ | This mode also only displays a black screen, but the pixels can also be | ||
+ | read out with the sprite collision trick. | ||
+ | |||
+ | The structure of the graphics is basically as in standard bitmap mode, but | ||
+ | the bits 9 and 10 of the g-addresses are always zero due to the set ECM bit | ||
+ | and so the graphics is - roughly said - made up of four " | ||
+ | each repeated four times. | ||
+ | |||
+ | ====== Invalid bitmap mode 2 (ECM/ | ||
+ | |||
+ | //(Ie. setting the ECM, Bitmap and Multicolor mode on at the same time)// | ||
+ | |||
+ | The last invalid mode also creates a black screen but it can also be | ||
+ | " | ||
+ | |||
+ | The structure of the graphics is basically as in multicolor bitmap mode, | ||
+ | but the bits 9 and 10 of the g-addresses are always zero due to the set ECM | ||
+ | bit, with the same results as in the first invalid bitmap mode. As usual, | ||
+ | the bit combination " | ||
+ | |||
+ | ====== Idle state ====== | ||
+ | |||
+ | In idle state, the VIC reads the graphics data from address $3fff (resp. | ||
+ | $39ff if the ECM bit is set) and displays it in the selected graphics mode, | ||
+ | but with the video matrix data (normally read in the c-accesses) being all | ||
+ | " | ||
+ | |||
base/built_in_screen_modes.txt · Last modified: 2015-04-17 04:30 by 127.0.0.1