MSX Video access method

Last updated

The ColecoVision, SG-1000, CreatiVision, and first-generation MSX computers use the TMS9918A Video Display processor (VDP), which has its own 16 KiB of video memory that was not shared with main memory. Compared to the unified system and video memory used by other 8-bit computers of the time, such as the Apple II, ZX Spectrum, and Commodore 64, separate memory has the advantage of freeing up of the Z80 processor's 64 KiB address space for main RAM, and the VDP does not need to steal CPU cycles to access video memory. The disadvantage is that the program has to use the CPU's dedicated I/O instructions to command the VDP to manipulate the contents of the video RAM. This not only slows down video access but also makes the porting of games from unified-memory platforms more difficult. Attempts of porting ZX Spectrum games (in the UK, the system most similar to the MSX) were often thwarted by this difference. Also, programmers had to learn to optimally use the more advanced capabilities of the VDP.

The TMS9918A's method of accessing the video RAM is slower than direct access, as used in unified-memory computers, because accessing video memory involved first outputting the low- then the hi-byte of the (14-bit) video memory address to I/O port $99, then one or more bytes of 8-bit data to port $98. After each write, the memory pointer advances to the next address, so consecutive addresses can be written to with repeated OUT instructions to $98. [1] Z80 had as fast OTIR/OTDR block instructions which could be used instead of LDIR/LDDR, still, allowed VRAM access rate was restricted unless during vertical blanking. [2]

However because of the screen layout, (which was top-down for each character of 8 lines then advancing to the next character) this was difficult to use for programmers who tried to convert existing software originally written for a system that had another arrangement of the screen layout. So when trying to use the TMS9918A high resolution mode video memory in the conventional way this method of indirect-access could be far slower than in 8-bit computers with unified memory, like any other piece of RAM. Consequently machines using this VDP could be inefficient at certain graphical tasks, such as scrolling games, which entailed moving the entire background memory. Instead of being able to use the Z80's efficient and fast block move instructions they had to write elaborate routines that first read bytes from video memory into system memory, and then back to another location in video memory, all one byte at a time.

To increase the speed to an acceptable level the programmers then often limited the scrolling to 8-pixel steps, which looked primitive in comparison to the 1 or 2 pixel scrolling steps available to the ZX Spectrum or Commodore 64 machines (although the Commodore 64 also used 8-pixel steps it had a fine-scroll register which could compensate for this, the MSX-1 did not).

The TMS9918A did have several features to make up for this shortfall, for example a programmable character set which allowed indirection, (to greatly increase scrolling because only the character table had to be moved, instead of the pixel data) and by having 32 hardware sprites. These sprites however were more limited than those in (for example) the Atari-8-bit systems. Because in their highest resolution they were only 16x16 pixels in a single-color (with transparency). A bigger drawback though was that in reality only scan line segments from a maximum of 4 sprites could simultaneously be displayed on any one picture scan line. Attempting to place a 5-th sprites scan line segment on the same scan line as the four others would result in flickering or missing scan line segments. Still, with care multiple multi-color sprites could be created this way, as many Japanese games prove. The ZX Spectrum did not have sprites, but when porting games it was often too much trouble to re-write the game structure to take advantage of the sprites. So most often they were simply ignored when porting games. [2]

There were tricks available to circumvent the scrolling and other speed related problems by using clever programming techniques and video chip capabilities that were not available in the ZX Spectrum, such as using an undocumented text mode that supported multiple colors. In addition, by using the built in re-programmable fonts, it was possible to combine high resolution graphics with faster scrolling while also being able to use sprites. [3] [4] This method was widely used by Japanese programmers writing native software, but rarely by British programmers who were porting Spectrum software. [5]

Most of the video problems described above, especially sprite limits and scrolling, were fixed with the newer MSX-2 video chips. However, by that time 16 bit systems like the Amiga and Atari ST had started to dominate the market.

Related Research Articles

Commodore 64 8-bit home computer introduced in 1982

The Commodore 64, also known as the C64 or the CBM 64, is an 8-bit home computer introduced in January 1982 by Commodore International. It has been listed in the Guinness World Records as the highest-selling single computer model of all time, with independent estimates placing the number sold between 12.5 and 17 million units. This claim is in spite of the Commodore 64 having three different Kernal ROM versions, two different SID sound chip versions, a few different motherboard versions and two different cases during its lifetime. Volume production started in early 1982, marketing in August for US$595. Preceded by the Commodore VIC-20 and Commodore PET, the C64 took its name from its 64 kibibytes(65,536 bytes) of RAM. With support for multicolor sprites and a custom chip for waveform generation, the C64 could create superior visuals and audio compared to systems without such custom hardware.

Original Chip Set

The Original Chip Set (OCS) is a chipset used in the earliest Commodore Amiga computers and defined the Amiga's graphics and sound capabilities. It was succeeded by the slightly improved Enhanced Chip Set (ECS) and greatly improved Advanced Graphics Architecture (AGA).

A blitter is a circuit, sometimes as a coprocessor or a logic block on a microprocessor, dedicated to the rapid movement and modification of data within a computer's memory. A blitter can copy large quantities of data from one memory area to another relatively quickly, and in parallel with the CPU, while freeing up the CPU's more complex capabilities for other operations. A typical use for a blitter is the movement of a bitmap, such as windows and fonts in a graphical user interface or images and backgrounds in a 2D video game. The name comes from the bit blit operation of the 1973 Xerox Alto, which stands for bit-block transfer. A blit operation is more than a memory copy, because it can involve data that's not byte aligned, handling transparent pixels, and various ways of combining the source and destination data.

SAM Coupé

The SAM Coupé is an 8-bit British home computer that was first released in late 1989. It was designed to have compatibility with the Sinclair ZX Spectrum, albeit in 48K mode only. It features a compatible screen mode and emulated compatibility, and was marketed as a logical upgrade from the Spectrum. It was originally manufactured by Miles Gordon Technology (MGT), based in Swansea in the United Kingdom.

Texas Instruments TI-99/4A Home computer by Texas Instruments

The Texas Instruments TI-99/4A is a home computer released in June 1981 in the United States. It is an enhanced version of the less successful TI-99/4 which was released in late 1979. The TI-99/4 and TI-99/4A are the first 16-bit home computers, using the Texas Instruments TMS9900 16-bit CPU. Both models include hardware support for sprites, using TI's own chips, and multi-channel sound, making them some of the first home computers to include such custom coprocessors, alongside the Atari 8-bit family also introduced in 1979.

MOS Technology VIC-II Video microchip in the Commodore 64 and C128 home computers

The VIC-II, specifically known as the MOS Technology 6567/8562/8564, 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals and DRAM refresh signals in the Commodore 64 and C128 home computers.

<i>Manic Miner</i>

Manic Miner is a platform video game originally written for the ZX Spectrum by Matthew Smith and released by Bug-Byte in 1983. It is the first game in the Miner Willy series and among the early titles in the platform game genre. The game itself was inspired by the Atari 8-bit family game Miner 2049er. It has since been ported to numerous home computers, video game consoles and mobile phones. Original artwork was created by Lez Harvey.

Texas Instruments TMS9918

The TMS9918 is a Video Display Controller (VDC) manufactured by Texas Instruments, introduced in 1979. The TMS9918 and its variants were used in the ColecoVision and CreatiVision, Memotech MTX, MSX, SG-1000/SC-3000, Spectravideo, Sord M5, Tatung Einstein, Texas Instruments TI-99/4, Casio PV-2000, and Tomy Tutor.

PC Engine SuperGrafx

The PC Engine SuperGrafx, also known as simply the SuperGrafx, is a fourth-generation home video game console manufactured by NEC Home Electronics and released in Japan and France in 1989. It is the successor system to the PC Engine, released two years prior. Originally known as the PC Engine 2 during production stages, it was purported as a true 16-bit home console, featuring improved graphics and audio capabilities over its predecessor.

Tatung Einstein

The Tatung Einstein is an eight-bit home/personal computer produced by Taiwanese corporation Tatung, designed in Bradford, England at Tatung's research laboratories and assembled in Bridgnorth and Telford, England. It was aimed primarily at small businesses.

ANTIC

Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977-1978 by Joe Decuir, Francois Michel, and Steve Smith for the Atari 8-bit family of home computers first released in 1979 and was patented by Atari, Inc. in 1981. ANTIC is also used in the Atari 5200 video game system released in 1982, which shares most of the same hardware as the 8-bit computers.

In computer graphics, a sprite is a two-dimensional bitmap that is integrated into a larger scene, most often in a 2D video game. The term was first used by Danny Hillis at Texas Instruments in the late 1970s. Originally, the term "sprites" referred to fixed-sized objects composited together, by hardware, with a background. Use of the term has since become more general.

Attribute clash

Attribute clash is a display artifact caused by limits in the graphics circuitry of some colour 8-bit home computers, most notably the Sinclair ZX Spectrum, where it meant that only two colours could be used in any 8×8 tile of pixels. The effect was also noticeable on MSX software and in some Commodore 64 titles. Workarounds to prevent this limit from becoming apparent have since been considered an element of Spectrum programmer culture.

A display list is a series of graphics commands that define an output image. The image is created (rendered) by executing the commands to combine various primitives. This activity is most often performed by specialized display or processing hardware partly or completely independent of the system's CPU for the purpose of freeing the CPU from the overhead of maintaining the display, and may provide output features or speed beyond the CPU's capability.

Yamaha V9938

The Yamaha V9938 is a video display processor (VDP) used on the MSX2 home computer, as well as on the Geneve 9640 enhanced TI-99/4A clone. It was also used in a few MSX1 computers, in a configuration with 16kB VRAM.

Video display controller

A video display controller or VDC is an integrated circuit which is the main component in a video signal generator, a device responsible for the production of a TV video signal in a computing or game system. Some VDCs also generate an audio signal, but that is not their main function.

Sord M5

The Sord M5 is a home computer launched by Sord Computer Corporation in 1982. Primarily the Sord M5 competed in the Japanese home computer market. It was also sold as the CGL M5 in the United Kingdom by Computer Games Limited and was reasonably popular in Czechoslovakia, where the M5 stood as one of the first affordable computers available to the general public. Takara also sold models in Japan as the Game M5, and models were also exported to South Korea.

Vector-06C

Vector-06C is a home computer with unique graphics capabilities that was designed and mass-produced in USSR in the late 1980s.

Tomy Tutor Home computer

The Tomy Tutor, originally sold in Japan as the Pyūta (ぴゅう太) and in the UK as the Grandstand Tutor, is a home computer produced by the Japanese toymaker Tomy. It was architecturally similar, but not identical, to the Texas Instruments TI-99/4A, and used a similar Texas Instruments 16-bit CPU. The computer was launched in Japan in 1982, and in the UK and the United States in the next year.

References