MILC logo


The videochip of the future: V9990
Stefan Boer, 00-00-94


                       - THE VIDEOCHIP OF THE FUTURE -
                                  V 9 9 9 0
There have been no real new hardware developments for the MSX since the MSX 
turbo R. But now the MSX-Hndlergemein- schaft from Switzerland are working on 
the "Graphics 9000", a 16-bit videocard for the MSX turbo R with the new V9990 
by Yamaha. The "Graphics 9000" will be available in October or November 1994 
for approximately US$ 290.
                               EVALUATION BOARD
Since the International MSX Fair in Tilburg on March 26th 1994 I'm the proud 
owner of one of the 10 V9990 evaluation boards which are in Europe at the 
moment. The evaluation board is a print (appr. 6" x 6") with a lot of 
electronic stuff I don't understand with in the middle the V9990 itself which 
is square like the R800. The V9938 (MSX2 videochip) and V9958 (MSX2+) were 
rectangular. The connections on the board include a connect for an interface 
to the MSX turbo R and one for a scart lead.
You can connect the board to a monitor or TV directly with a scart lead, so 
the image of the V9990 goes directly to the monitor. This is a small 
disadvantage if you have only one monitor like me, because this means you have 
to switch the leads when you want to work on the V9990 after working on the 
V9958 or vice versa. This problem will probably be solved with the Graphics 
You can connect a VGA monitor (640x400 or 640x480 in 16 colours) or even an 
LCD to the V9990, but unfortunately I haven't been able to test this yet.
                                 V9990 BASIC
If you connect the V9990 to your turbo R and monitor and you switch the 
computer on, the screen will remain blank at first. This is because the 
operating system of the turbo R still uses the V9958. You have to execute a 
V9990 program before you can see anything.
Henrik Gilvad from Denmark modified the BASIC of the turbo R so it works with 
the V9990. He also modified the KUN compiler (also known as XBASIC). The V9990 
BASIC, BIOS and KUN are loaded into the DRAM (*) of the turbo R. The BASIC is 
not completely compatible with the normal BASIC, it doesn't have to be and 
it's not possible due to some hardware differences. But there aren't so many 
differences so it's not hard at all to program something in the V9990 
(*) Note: Because ROM is significantly slower then RAM on the turbo R, it has 
the possibility to copy the ROMs to the upper 64 kB of the main RAM which is 
called DRAM. The engine of the turbo R (S1990) makes it possible to use this 
DRAM as "ROM".
An important difference between the V9938 and the V9990 is that the V9990 
hasn't got a textmode. Henrik solved this problem by programming his own 
textmode in the P2-mode of the V9990. It's a very fast 64-column textmode with 
International character set, so the Japanese characters of the turbo R can't 
bother you anymore.
The V9990 BASIC supports the following screen modes:
screen  remark
0       64 column textmode
1       will be 32 column textmode
2       P1 mode (256 x 212 dualplane patternmode)
3       P2 mode (512 x 212 patternmode)
4       identical to SCREEN 2
5..12   identical to MSX2/2+ except the sprites, only 2 sprites in
        one colour are possible
The V9990 supports a lot more screen modes, which can easily be selected by a 
few VDP commands. For example, you can select the overscan mode by OUT &H67,1. 
In the overscan mode you can use the entire screen, including the borders! The 
resolution is 384x240 in stead of 256x212 or 768x240 in stead of 512x212.
The following graphical instructions are supported by the V9990 BASIC: 
non-graphical instructions are not modified.
                                 512 kB VRAM
The V9990 has a lot of VRAM: 512 kB!!! This means that you have 16 pages in 
SCREEN 5 and 6 and 8 pages in SCREEN 7..12. Doesn't something like SET PAGE 
13,15 look great?!
                               SPEEDY GONZALES
The V9990 is extremely fast!!! For example, you can make a full screen smooth 
scroll in SCREEN 5 with a BASIC program using COPY! The copy command of the 
V9990 is 9 times faster than the "high-speed" copy command of the V9938! On 
the V9938 you have to use a "logical" copy if you want to copy pixels in stead 
of bytes or if you want to use logical operations. On the V9990 this isn't 
necessary so those copies are 23 times faster!!! Note: In MSX-BASIC all copies 
are treated as logical copies on the MSX2/2+/turbo R, so the COPY command in 
BASIC is 23 times faster with the V9990 BASIC!
                                  I/O SPEED
The V9990 has faster commands but it also allows faster I/O! The V9938 can 
hardly keep up with the Z80, so the R800 of the turbo R is slowed down when it 
communicates with the V9958. This isn't necessary with the V9990, so you can 
really use the speed of the R800.
The evaluation board and Graphics 9000 use I/O addresses &H60..&H6F. These 
ports are called P#0..P#F. P#0..P#7 are used for normal VDP operations, 
P#8..P#B are for the kanji ROMs (not supported on Graphics 9000, but the turbo 
R has its own kanji ROMs) and P#C..P#F are reserved for future use.
On the International MSX Fair in Tilburg on April 3rd 1993 Anarchy from 
Germany/Switzerland released their Ray Tracing demo. This demo has a lot of 
beautiful ray-traced animations in SCREEN 8, which are real-time decrunched. 
It looks nice but it's not smooth because the V9938 is too slow.
Mi-Chi (a member of Anarchy) made a FLI-Player for the V9990. It works the 
same, some of the animations were used in the Ray Tracing demo too. But on the 
V9990 the animations are really SMOOTH!!! A fast harddisk (with SCSI interface 
from Henrik Gilvad) is recommended because some of the .FLI files are 400 kB 
and there is even a new .FLI player with files upto 2 MB. Unfortunately I 
can't watch these large files because I haven't got enough RAM.
                               DRAWING PROGRAMS
The Graphics 9000 will be sold with two drawing programs. One for B1-mode, 
256x212 with 64 colours out of a palette of 32768, and one for P2-mode, 
512x212 with 16 colours out of a palette of 32768 colours. The B1-program 
looks like DD-Graph and the P2-program will have a lot of options and used 
pull down menus.
The Graphics 9000 will be capable of super imposing, which makes it ideal for 
videofreaks. Mi-Chi is working on a program for animations, wipes, etc. The 
advantages of the Graphics 9000 compared to the Philips 8280 are:
- the V9990 is much faster
- on the 8280 you can't use the border, the V9990 has the overscan mode
- the V9990 has better graphics (upto 512x424 with 32768 colours) for digis
Digitizing is not possible yet with the V9990, but it will be possible and 
that will be amazing because you can digitize in the 512x424 mode with 32768 
colours!!! This means that you can't see the difference between the digi and 
the original!
One of the demodisk are two 512x424 YUV digis. These digis are really 
brilliant, you can't see the difference with normal TV quality! YUV is a 
system for encoding 19268 colours using only 8 bits per pixel similar to the 
YJK system used in SCREEN 12 on the MSX2. It has the same disadvantage as YJK 
(colour spill because 4 adjacent pixels have the same U and V values, only the 
brightness (Y) can be different for each pixel), but you can hardly see it in 
such a high resolution. You can imagine the quality of pictures with 32768 
colours without colourspill!!!
I'm the programmer of UMAX, famous from our games Pumpkin Adventure and The 
Witch's Revenge. It's very frustrating if you can't program what you want 
because the possibilities and/or speed of the videochip. This happens a lot if 
you program something for the MSX2! The number of characters moving on the 
screen and the size of them is a problem, and a nice scrolling routine is even 
The V9990 has two modes ideal for games: P1 and P2. These are patternmodes, 
the screen consists of patterns of 8x8 pixels each. The resolutions are 
256x212 and 512x212. With these pattern modes it is much more easy to make 
much nicer games for the V9990 than for the MSX2!
The P1-mode is better known as the dualplane mode, because it has two screens 
which can scroll independently! You see the back screen where the front screen 
is transparent. It's very easy to make fantastic multi layer scrolls using 
this dualplane mode! Each plane can have one of the 4 palettes of 16 colours 
out of 32768.
A very special feature of the P1-mode is a kind of hardware screensplit. You 
can select a kind "border" in 64-pixel units. Above and on the left-hand side 
of this border plane A is the front plane, and below and on the right-hand 
side of this border plane B is the front plane.
Because the V9990 has so much VRAM it can store over 15000 patterns. The 
format of the patterns is very nice, it's equal to a SCREEN 5 picture with 8x8 
blocks. So it's very easy to use the patterns!
Games for the MSX2 are often in SCREEN 5 and use 8x8 blocks. The screen 
construction routine for such games is rather complicated, because for each 
pattern you have to calculate at which coordinates it is in the VRAM, and it 
has to be copied to the right position on the visible screen. This is slow and 
On the V9990 it's both very simple and fast: just VPOKE the pattern number (16 
bits) in the pattern nametable. Are you now beginning to understand what I 
mean with "it is much more easy to make much nicer games for the V9990 than 
for the MSX2"? But this is not all!
In P1 and P2 modes you can use upto 125 (one hundred and twenty five!) 
sprites, which is almost 4 times as much as the 32 sprites of the V9938. Upto 
16 sprites can be displayed on a single horizontal line, so the times of 
blinking sprites are over!
But the main advantage of the sprites is that, just like the patterns, they 
are SCREEN 5 graphics! So you can draw 16x16 sprites in DD-Graph and just load 
that into the VRAM. Without any conversion you can use those 16x16 blocks as 
On the MSX2 each horizontal line of a sprite can have only 1 colour, on the 
V9990 all colours out of one of the four palettes of 16 colours out of 32768 
can be used. It is possible to get multi-coloured sprites on the MSX2, but you 
have to use 2 sprites for one "object" to get 3 colours on a horizontal line 
so you can only have 16 of those 3-colour sprites!
If you want the sprite to move behind a fence and still see the part of the 
sprite not covered by the fence, that's very hard to do on the MSX2. But all 
you need to do on the V9990 is putting the fence at the front plane and 
setting one bit of the sprite attributes!
Another advantage of the V9990 is that in the 512x212 P2-mode the spritepixels 
have the same size as screenpixels. On the MSX2 one sprite pixel is two screen 
pixels wide, and the x-coordinate can only be 0..255, on the V9990 the x- 
coordinate can be 0..511.
The B-modes haven't got sprites because they were not designed to use for 
games. They do have two special 32x32 cursor sprites.
The V9990 is ideal for games, business applications and video applications. 
Mountainsoft from Switzerland are working on a game, there will be a V9990 
version of the DTP program Aladin and a lot more software (including the 
drawing and video programs I already mentioned) are being developed.
Henrik made a program to watch pictures from a Photo CD using a CD-ROM drive 
and V9990 and Mi-Chi made a very professional viewer for a lot of formats 
including.gif, BMP and PCX. The.gif, BMP and PCX pictures look a lot better on 
the V9990 than on the MSX2 because the V9990 can display more colours (32768) 
at a high resolution (512x424).
A lot of groups, including UMAX, have plans to make a game for the V9990.
These paragraph is interesting for programmers, if you don't know anything 
about interrupts you'd better skip it.
The V9990 can generate interrupts caused by the following events:
1) Vertical blank (50/60 Hz)
2) When displaying a certain line (line interrupt)
3) When a command is finished
4) When displaying at a certain HORIZONTAL position
5) At the start of displaying EACH line
The V9938 only supports 1 and 2. The advantage of 3 is clear. With 4 you can 
make a "vertical screensplit", which is not possible on the V9938 (not a 
stable one) and 5 is very nice for "waves".
To see what caused the interrupt you have to read a status register on the 
MSX2, on the V9990 you only have to read the interrupt flag port (P#6) which 
is much faster.
Programming for the V9990 is more simple or at least as simple as programming 
for the V9958. A lot of things take less IN/OUT instructions and so they take 
less time and less bytes.
I already mentioned the interrupt flag port, the V9990 also has a status port 
with a lot of nice things like "vertical non-display period", "horizontal 
non-display period", "command being executed", etc. Reading from/writing to 
the VRAM is more simple too, just compare the following routines to see what I 
; SetWriteV9938
; In: CHL = VRAM address (17 bits)
        LD      A,H
        AND     #3F
        OR      #40
        EX      AF,AF'
        LD      A,H
        OR      C
        OUT     (#99),A
        LD      A,128+14
        OUT     (#99),A
        LD      A,L
        OUT     (#99),A
        EX      AF,AF'
        OUT     (#99),A
; SetWriteV9990
; In: EHL = VRAM address (19 bits)
        LD      C,#64
        XOR     A
        OUT     (C),A
        DEC     C
        OUT     (C),L
        OUT     (C),H
        OUT     (C),E
                           RESOLUTIONS AND COLOURS
The V9990 supports the following resolutions:
mode    resolution      remark
P1      256x212(424)    dualplane patternmode
P2      512x212(424)    patternmode
B1      256x212(424)
B2      384x240(480)    overscan
B3      512x212(424)
B4      768x240(480)    overscan
B5      640x400
B6      640x480
Interlaced vertical resolutions are shown in parentheses "()". These 
resolutions can be combined with the palette systems below, so a lot of 
different types of screen modes are possible. Systems using 8 or 16 bits per 
pixel are not possible for B4..B6, P1 and P2 only work with 4 bits per pixel.
pixel   colours         system
16      32768           simultaneously (TrueColour)
 8         64           out of a palette of 32768
          256           like SCREEN 8
        19268           like SCREEN 12 (YJK)
        19268           YUV
 4         16           out of a palette of 32768
 2          4           out of a palette of 32768
                          DISPLAY SIZE VS IMAGE SIZE
A very nice feature of the V9990 is the image size, which is much larger than 
the actual display size most of the time, so you can only see a part of the 
total "image" on your screen. Which part is determined by the scroll 
registers, so you can scroll smoothly in all directions in all screen modes.
The image size depends of the number of bits used per pixel. The following 
table is valid for the bitmap modes (B1..B6).
bits/pixel      resolutions
2               256x8192, 512x4096, 1024x2048, 2048x1024
4               256x4096, 512x2048, 1024x1024, 2048x 512
8               256x2048, 512x1024, 1024x 512, 2048x 256
16              256x1024, 512x 512, 1024x 256
In the P1 mode there are two images of 64x64 patterns each (512x512 pixels), 
the P2 mode has one image of 128x64 patterns (1024x512).
If you use the B1 mode for a game you can put an entire level of the game into 
the VRAM, because there is space for 16 screens if you use 16 colours. You 
don't have to use blocks but you can just draw the entire level. Of course the 
P1 and P2 modes are better for games because they have sprites.
The V9938 also had an interlaced possibility, but it wasn't used very often 
because the odd lines of the picture have to be in one page and the even lines 
in another. Because of this a picture has to be converted before it can be 
shown in interlaced mode. Because of this animations are almost impossible.
The interlaced mode of the V9990 is much nicer, because it just doubles the 
display size of the picture. No conversions are necessary and animations are 
just as easy as in a non interlaced mode.
By the way, the V9990 has a undocumented mode with 16 colours and a horizontal 
resolution of 1024. Together with the interlaced possibility the maximum 
resolution a V9990 can show on a normal TV is 1024x424! I must admit the 
quality isn't very high on my TV, but this should improve if you use a better 
I didn't cover all the possibilities of the V9990, but I think it is more than 
clear that this videochip offers revolutionary possibilities on an MSX.
A lot of things that are not possible at all on a V9958 or only with a lot of 
trouble, can be programmed for the V9990 in just a few lines of BASIC! You can 
imagine what the possibilities are if you use machine code!
I'm going to start with a V9990 programming course in both BASIC and ML as 
soon as the Graphics 9000 is available.
It's a pity the V9990 wasn't finished soon enough (autumn of 1991) to be used 
in the MSX turbo R, which was released in the autumn of 1990. Most MSX users 
have ancient hardware nowadays. The V9938 was developed in 1985, so it's 
almost ten years old. On other systems it's very normal to upgrade your system 
every few years.
This has been possible on the MSX (MSX1 1983, MSX2 1985, MSX2+ 1988, MSX turbo 
R 1990), and now it will be possible again to upgrade your system with a 
Graphics 9000 and a Moonsound (16-bit soundcard with OPL4). I hope that a lot 
of MSX users around the world will buy a Graphics 9000 and a Moonsound.
Of course there isn't so much software at first, and because of this people 
don't buy the Graphics 9000, there will be no more software for it, etc. We 
have to break this vicious circle! Just buy a Graphics 9000 (and a turbo R if 
you haven't got one yet), then the software will follow soon. I can assure you 
a lot of groups who develop software can't wait to start programming for the 
A lot of groups who are developing software for the MSX2 at the moment are not 
challenged anymore, they made a few games and they want to move on. This is 
not possible with the MSX2. If we don't upgrade our hardware they will start 
developing software for other systems like the PC. Unfortunately a lot of 
groups already made that decision. The only way to stop more groups to take 
this bad step is to support the new Graphics 9000 and Moonsound.
                                                                   Stefan Boer
                         (c) Sunrise Foundation 1994
                              Sunrise Foundation
                                 P.O. Box 178
                               1530 AD  Wormer
                               The Netherlands