- MSX Video access method
The first MSX computers used the TMS9918A Video Display processor (VDP), which had its own 16K of
video memory that was not shared with main memory. This has the advantage that the limited memory range of a 8-bit processor, (theZ80 ) which had a 16-bit address bus, and was thus limited to jut 64K, could be used more effectively. The disadvantage was that the CPU could not have direct access to the Video RAM, but had to command the VDP to manipulate the video RAM, through I/O instructions. This not only slowed down video access, but was also incompatible with the way most other home computers of the time operated, thereby making the porting of software (especially games) more difficult. Also, programmers had to learn to optimally use the more advanced capabilities of the MSX-1 video hardware.This method of accessing the video RAM was slower than direct access because accessing video memory involved first outputting the low then the hi bytes of the video memory address to I/O port $99, then the 8-bit data to port $98. MSX-1's video chip did have a "memory pointer auto-advance", so consecutive addresses could be written to with repeated OUT instructions to $98. [ [http://emu-docs.org/VDP%20TMS9918/Datasheets/TMS9918.pdf Online datasheet of the TMS9918A] ] . This also meant that the fast z80 blockmove and blockfill instructions could not be used on the video memory.
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 another system (such as the
Sinclair Spectrum ) that had another arrangement of the screen layout. So when trying to use the MSX-1 high resolution mode video memory in the conventional way this method of indirect-access could be far slower than in other 8-bit computers whose CPUs could usually access their screen memory directly, like any other piece of RAM. Consequently MSX-1 machines 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 Z80s 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 the 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 MSX-1 video chip 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-8bit systems, Because in their highest resolution they were only 16x16 pixels, and 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, and attempting to place a scan line segment of a 5th sprite on the same scan line as the four others would result in flickering or missing scan line segments. see MSX-1 sprites. Still, with care multiple multi-color sprites could be created this way, as many Japanese games prove. Only the Spectrum did not have sprites, and in 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.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 Sinclair Spectrum (the UK system most resembling MSX-1, and the source of most games that were ported to MSX), by using an undocumented text mode that supported multiple colors, and 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. This method was widely used by Japanese software producers, but rarely when British programmers were porting Spectrum software. [ [http://www.crashonline.org.uk/08/rebirth.htm Old Spectrum magazine "Crash" page gives an example of programmers bad attitude toward MSX in Britain] ]
They tried to use the MSX-1 as if it was a Spectrum. So it is notable that games that were written from scratch, (mostly by Japanese programmers) made much better use of the (extended) capabilities of MSX-1's video chip. Also notable is that most of these video problems described above were fixed with the newer MSX-2 video chips, especially the limitations for the sprites were removed. However, By that time 16 bit systems like the
Amiga andAtari ST had started to dominate the market.References
Wikimedia Foundation. 2010.