Graphics Modes
The Commodore 64 was designed to deliver a number of official graphics modes which provide for combinations of character graphics, bitmap graphics and sprites in single and multicolour. All of which can be mixed. The various modes were implemented using the VIC-II. As familiarity with the VIC-II grew, users developed non-official techniques which delivered graphical improvements.
Implementation[edit | edit source]
The selection of graphics modes is determined by the combined setting (or clearing) of three bits in the two VIC-II control registers. In Control Register 1 ($D011) the flags are Bit 5 (BMM (Bitmap Mode)) and Bit 6 (ECM (Extended Color Mode)). In Control Register 2 ($D016) the flag is Bit 4 (MCM (Multicolor Mode)). Table 1 highlights the bits in the two control registers.
Table 1 - VIC-II Control Registers | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Hex Address | Dec Address | Type | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Contents |
$D011 | 53265 | Register | RST8 | ECM | BMM | DEN | RSEL | YSCROLL | Control Register 1 | ||
$D016 | 53270 | Register | - | - | RES | MCM | CSEL | XSCROLL | Control Register 2 |
Official Modes[edit | edit source]
As there are only 3 bits (ECM, BMM, and MCM) which define the graphics mode, there can be only 8 (2^3) possible bit combinations. Of these, only 5 were officially supported graphics modes. Table 2 displays the bit combinations and results.
Table 2 - Graphics Modes VIC-II Bit Combinations | ||||
---|---|---|---|---|
Mode | ECM | BMM | MCM | Result |
0 | 0 | 0 | 0 | Standard Character Mode |
1 | 0 | 0 | 1 | Multicolor Character Mode |
2 | 0 | 1 | 0 | Standard Bitmap Mode |
3 | 0 | 1 | 1 | Multicolor Bitmap Mode |
4 | 1 | 0 | 0 | Extended Background Color Mode |
5 | 1 | 0 | 1 | Extended Background Color Multicolor Character Mode (invalid) |
6 | 1 | 1 | 0 | Extended Background Color Standard Bitmap Mode (invalid) |
7 | 1 | 1 | 1 | Extended Background Color Multicolor Bitmap Mode (invalid) |
Modes 0-4 are documented, and were therefore supported, by Commodore. Modes 5-7 are technically feasible, but considered illegal. Although the features expected of modes 5-7 are present (such as collision detection), there is no visible screen output for the user. It is for this reason that they are not utilised.
Unofficial Modes[edit | edit source]
There are a number of user, or unofficial, modes which have been developed to improve the quality of graphics from the VIC-II. However, rather than being true “modes”, they are actually programming techniques which exploit flaws in the VIC-II; sometimes in combination with raster interrupts, interlacing and sprites. The various effects create graphics which appear to create a larger display area and/or an increased palette; although, notably, never increasing the maximum VIC-II pixel density. Essentially these improvements are achieved through software, as opposed to the official modes which are achieved through hardware. The known techniques are:
High Resolution Display Techniques[edit | edit source]
Medium Resolution Display Techniques[edit | edit source]
Medium Resolution Display Techniques | ||
---|---|---|
Acronym | Technique Name | Date Created |
FLI | Flexible Line Interpretation | July 1989 |
HCB | Half Char Bitmap | October 2008 |
IFLI | Interlaced Flexible Line Interpretation | Unknown 1991 |
MUCSU | Multicolor Sprite Underlay | |
MCI | Multicolor Interlace |
Low Resolution Display Techniques[edit | edit source]
Low Resolution Display Techniques | ||
---|---|---|
Acronym | Technique Name | Date Created |
Megatext | July 2004 | |
PRS | Permanent Raster Split | February 2011 |
New graphics modes in first use are also listed in the Timetable of C64 demos.
Links[edit | edit source]
- VIC-II memory organizing codebase.org
About C64 graphics modes[edit | edit source]
- Commodore 64 display modes Standard modes at sta.c64.org
- custom graphics modes at codebase.org
- Description of C64 graphic modes
- George Taylor's TRI FLI
- Cascade64.de