Yamaha V9990 E-VDP-III Programmers Manual

Targeted at Gfx9000 and Video9000 cartridges for MSX. Written by Patriek Lesparre. Thanks go to Marcel Delorme and Dan Derpaux for help.

CONTENTS

  1. OUTLINE
  2. BASIC INPUT/OUTPUT
    1. ACCESS OF REGISTERS R#0 to R#28, R#32 to R#54
    2. ACCESS OF VRAM
    3. ACCESS OF PALETTE
    4. EXECUTION OF COMMAND
    5. STATUS PORT
    6. INTERRUPT PORT
    7. SYSTEM CONTROL PORT
  3. V9990 DISPLAY MODES
    1. PATTERN DISPLAY MODE
    2. BIT MAP DISPLAY MODE
    3. REGISTER SETTING VALUES FOR EACH DISPLAY MODE
  4. CONTROL OF PALETTE
    1. SELECTION OF DISPLAY TYPE
  5. VRAM
    1. P1 VRAM
    2. P2 VRAM
    3. B1-B6 VRAM
  6. Sprite and Cursor
    1. Sprite (P1-P2)
    2. Cursor (B1-B6)
  7. COMMAND
    1. Command execution method
    2. Write operations
    3. LMMC (Logical Move to Memory from CPU)
    4. LMMV (Logical Move to Memory from VDP)
    5. LMCM (Logical Move to CPU from Memory)
    6. LMMM (Logical Move to Memory from Memory)
    7. CMMC (Character Move to Memory from CPU)
    8. CMMM (Character Move to Memory from Memory)
    9. BMXL (Byte Move to XY from Linear)
    10. BMLX (Byte Move to Linear from XY)
    11. BMLL (Byte Move to Linear from Linear)
    12. LINE
    13. SEARCH
    14. POINT
    15. PSET
    16. ADVANCE
  8. V9990 REGISTER SPECIFICATIONS
    1. I/O PORT SPECIFICATIONS
    2. Register specifications
  9. Timing

OUTLINE

The V9990 is a video display processor (VDP) which features as follows. Having a high-speed drawing and animation functions, it provides various screen modes which can be used widely for games, audio-visual, office automation and other purposes. Also, as a monitor, it supports many types of display units such as home TV sets, CRT for personal computers and liquid crystal panels.

<Game Specifications>

For this type, two pattern display modes are available as follows.

  • P1 (Display resolution 256x212, 2 layers)
  • P2 (Display resolution 512x212)

Various highly advanced functions are available such as powerful sprite function and dual-layer independent omnidirectional scroll function.

<AV Specifications>

For this type, four kinds of bit map display modes are available as follows. They are capable of providing display on the NTSC or PAL frequency monitor.

  • B1 (Display resolution 256x212)
  • B2 (Display resolution 384x240)
  • B3 (Display resolution 512x212)
  • B4 (Display resolution 768X240)
  • Capable of doubling the resolution in the vertical direction by using the interlace.
  • Up to 32,768 colors/pixel can be displayed.
  • Built-in color palette (64 colors selected out of 32,768 colors)
  • Omnidirectional smooth scrolling is possible.
  • Superimposition and digitization are possible. (Video9000)
  • Allows use of the monitor screen to the full extent in four directions as the display range by using the over-scan mode (B2, B4) in such application as for the telopper.
  • Supports the high-speed hardware drawing commands such as the screen transfer, font color development and line.
  • The hardware cursor display function is available.

<OA Specifications>

For this type, two kinds of bit map display modes are available as follows. They can be displayed on the high resolution Monitor.

  • B5 (Display resolution 640X400)
  • B6 (Display resolution 640X480)
  • Up to 16 colors/pixel can be displayed. (Selectable out of 32,768 colors depending on the color palette)
  • Omnidirectional smooth scrolling is possible.
  • Supports the high-speed hardware drawing commands such as the screen transfer, font color development and line.
  • The hardware cursor display function is available.

<Others>

  • Built~in DA converter
  • Linear RGB output
  • Direct connection of CG ROM such as KANJI ROM is possible, but has not been implemented in Gfx9000 or Video9000. Further information regarding it is omitted from this manual.
  • Useable VRAM: Dual port DRAM (The access time is 120nS, but 100nS for the B6 mode.)
    • 64Kx4
    • 128Kx8
    • 256Kx4
  • As the VRAM capacity, 128KB, 256KB and 512KB configurations are possible.
  • Capable of direct access from CPU to VRAM by means of the 16 bit bus.
  • Use of the LCD panel (1 screen panel and single drive type of 2 screen panel) is possible.

BASIC INPUT/OUTPUT

Data is input and output to and from the V9990 through the I/O ports (P#0 to P#F). Basically, as an access, both Read and Write are possible at all ports. But only Read is possible with the STATUS port (P#5) and Write only with the SYSTEM CONTROL port (P#7).

ACCESS OF REGISTERS R#0 to R#28, R#32 to R#54

To set a value in the register, have the register No. output at REGISTER SELECT port (P#4) and then the data at REGISTER DATA port (P#3).
To obtain the value from the register, have the register No. output at P#4 and then read P#3.
The register No. is specified by using the lower 6 bits of the value at P#4 and the bit 7 (MSB) functions as WII (Write Increment Inhibit) and bit 6 as RII (Read Increment Inhibit). If WII is "1", automatic increment of the register No. by writing the data to the register is prohibited. If RII is "1", automatic increment of the register No. by reading the data of the register is prohibited.

b7b6b5b4b3b2b1b0
P#4 (Write)WIIRIIRegister No. (R#n)
 
P#3 (Read/Write)Register Data
...

ACCESS OF VRAM

To write a value in VRAM, set the target address to VRAM Write Base Address registers (R#0-R#2) and have the data output at VRAM DATA port (P#0). As the bit 7 (MSB) of R#2 functions as AII (Address Increment Inhibit), if it is "1", automatic address increment by writing the data is inhibited.

To read the data of VRAM, set the target address to VRAM Read Base Address registers (R#3-R#5) and read in the data of VRAM DATA port (P#0). As the bit 7 (MSB) of R#5 functions as AII (Address Increment Inhibit), if it is "1", automatic address increment by reading in the data is inhibited.

The address can be specified up to 19 bits (512K bytes), with lower 8 bits set to R#0 (or R#3), center 8 bits to R#1 (or R#4) and upper 3 bits to R#2 (or R#5).

Note: Always the full address must be written. Specifying partial addresses will not work correctly.

  • VRAM Write
b7b6b5b4b3b2b1b0
P#4 (Write)00000000
 
P#3 (Write)VRAM lower address(R#0 set)
 
P#3 (Write)VRAM center address(R#1 set)
 
P#3 (Write)AIIVRAM upper address(R#2 set)
 
P#0 (Write)Data
...
  • VRAM Read
b7b6b5b4b3b2b1b0
P#4 (Write)00000011
 
P#3 (Write)VRAM lower address(R#3 set)
 
P#3 (Write)VRAM center address(R#4 set)
 
P#3 (Write)AIIVRAM upper address(R#5 set)
 
P#0 (Read)Data
...

ACCESS OF PALETTE

The palette data can be set or checked by setting the palette No. and RGB specification to the palette pointer (R#14) and reading or writing to the palette data port (P#1).

The palette No. is specified by using the upper 6 bits of R#14 and RGB by using the lower 2 bits (R=0, G=1, B=2). The lower 2 bits constitute a ternary counter which undergoes automatic increment in the order of RGB through the port access. Setting these counter bits to 3 manually will cause the next palette write to be ignored and the counter to wrap around to 0 on the same palette number.

It's possible to partially update the palette colors as changes to either Red, Green or Blue values take effect immediately.

It should be noted that how the palette setting is actually displayed also depends on the palette control register (R#13) setting.

b7b6b5b4b3b2b1b0
P#4 (Write)00001110
 
P#3 (Write)Palette No.00(R#14 set)
 
P#1 (Write)YS--RED data
 
P#1 (Write)---GREEN data
 
P#1 (Write)---BLUE data

EXECUTION OF COMMAND

With the necessary parameter set to the command registers, set the operation code. For transfer from CPU (or to CPU), the data is output to the command data port (P#2) by the amount required after this stage.

STATUS PORT

Only by reading the status port (P#5, Read Only), the status of the V9990 can be checked.

INTERRUPT PORT

The cause of interrupt can be determined by reading the interrupt flag port (P#6). As the flag is not reset automatically, "1" should be written to the applicable bit to reset it.

SYSTEM CONTROL PORT

The system control port (P#7) is only for writing. It can be used to reset the system and to select the master clock.

V9990 DISPLAY MODES

PATTERN DISPLAY MODES

Pattern Display Function

Mode nameP1P2
Master clock frequency21.5MHz21.5MHz
Pixel clock frequency5.4MHz10.7MHz
Horizontal cycle15.7kHz (NTSC)15.7kHz (NTSC)
Display resolution32x26.5 patterns (256x212 pixels)64x26.5 patterns (512x212 pixels)
Image space64x64 patterns128x64 patterns
Number of layers2 layers with priority control1 layer
Pattern size8x8 pixels8x8 pixels
Simultaneously displayed colors30 colors + transparant30 colors + transparant
Color palette4 palettes of 16 colors out of 32768 colors4 palettes of 16 colors out of 32768 colors
Number of patternsLayer "A": 8160 units
Layer "B": 7680 units
15360 units

Sprite Display Function

Size16x16 pixels
Limited No. of displayed units125 on 1 screen
16 on 1 line
Displayed colors15 colors + clear color (for each pixel)
Palette can be selected for each sprite (1 palette selected out of 4)
Specification of display priorityPriority between sprite and pattern layer can be set for each sprite. The sprite No. order is used for priority order among sprites.
PatternSelected from among 256 patterns
The pattern data is shared with the pattern layer (the base address should be set in register R#25.)

BIT MAP DISPLAY MODES

Bit map screen display function

ModeMaster clock
(MHz)
Pixel clock
(MHz)
Display resolution () interlaced
(pixel x pixel)
Color depth
(bits per pixel)
Image size by width (lines)
256 pixels512 pixels1024 pixels2048 pixels
*B014.33.6Overscan NTSC
192x240 (192x480)
Overscan PAL
192x290 (192x580)
161024512256
820481024512256
4409620481024512
28192409620481024
B121.55.4NTSC/PAL
256x212 (256x424)
161024512256
820481024512256
4409620481024512
28192409620481024
B214.37.2Overscan NTSC
384x240 (384x480)
Overscan PAL
384x290 (384x580)
16512256
81024512256
420481024512
2409620481024
B321.510.7NTSC/PAL
512x212 (512x424)
16512256
81024512256
420481024512
2409620481024
B414.314.3Overscan NTSC
768x240 (768x480)
Overscan PAL
768x290 (768x580)
41024512
220481024
B521.521.5640x400 @ 25.3kHz 41024512
220481024
B625.225.2640x480 @ 31.5kHz 41024512
220481024
*B721.521.5NTSC/PAL
1024x212 (1024x424)
41024512
220481024
* Undocumented mode

Displayed color (RGB conversion system)

bits per pixelNameRGB conversion systemNumber of displayed colors
16BD16Direct RGB
(YS:1bit, G:5bit, R:5bit, B:5bit)
32768 colors
8BD8Direct RGB
(G:3bit,R:3bit,B:2bit)
256 colors
BYJKYJK Decoder19268 colors
BYJKPYJK Decoder +
Color palette
12599 colors +
16 colors out of 32768 colors
BYUVYUV Decoder19268 colors
BYUVPYUV Decoder +
Color palette
12599 colors +
16 colors out of 32768 colors
BP6Color palette64 colors out of 32768 colors
4BP4Color palette16 colors out of 32768 colors
2BP2Color palette4 colors out of 32768 colors

Cursor Function

  • Size
  • Number of displayed units
  • Displayed color
  • Pattern
  • 32x32 pixels
  • 2 in 1 screen
  • 3 colors + EOR color on bit map screen + clear color
  • Any form

REGISTER SETTING VALUES FOR EACH DISPLAY MODE

ModeP#7R#6R#7
MCSDSPMDCKMXIMMCLRMC25MSM1SMPALEOILHSCN
P10001100/10/10/10/10/10
P20112100/10/10/10/10/10
*B01200-30-300/10/10/10/10/10
B10200-30-300/10/10/10/10/10
B21211-30-300/10/10/10/10/10
B30211-30-300/10/10/10/10/10
B41222-30-100/10/10/10/10/10
B50222-30-10000001
B60222-30-11000001
*B70222-30-100/10/10/10/10/10
* Undocumented mode

CONTROL OF PALETTE

For the V9990, there are 10 types (display types) by which the data (2 to 16 bits) obtained from VRAM is transmitted to the D/A converter with 5 bits for each RGB as follows.

1. PP

Display type when the display mode is P1 or P2

Sprite colors are specified by Pattern data plus a palette offset specified in the Sprite Attribute Table.

Background colors are specified by Pattern data plus a palette offset in R#13. P1 layer "A" and P2 pattern pixels 0,1,4,5 use offset specified in R#13 PLTO3-2. P1 layer "B" and P2 pattern pixels 2,3,6,7 use offset specified in R#13 PLTO5-4.

2. BYJK

Display type when the display mode uses full YJK on the bit map. This mode is the same as V9958 YJK mode.

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background colors are specified by YJK bitmap data. Base color, specified by JK values, is shared among 4 pixels, each pixel has an individual Y (luminance) value.

b7b6b5b4b3b2b1b0
1st pixelYK (low)
2nd pixelYK (high)
3rd pixelYJ (low)
4th pixelYJ (high)

RGB-YJK conversion:

R = Y + JY = B/2 + R/4 + G/8
G = Y + KJ = R - Y
B = 5/4Y - J/2 - K/4K = G - Y

3. BYJKP

Display type when the display mode uses YJK and palette mixed on the bit map. This mode is the same as V9958 YJKP (aka YAE) mode.

Same as BYJK, except that for each pixel bit A selects YJK or Palette mode. In Palette mode, colors are specified by Y value plus a palette offset specified in R#13 PLTO5-4.

b7b6b5b4b3b2b1b0
1st pixelYAK (low)
2nd pixelYAK (high)
3rd pixelYAJ (low)
4th pixelYAJ (high)

4. BYUV

Display type when the display mode uses full YUV on the bit map

Same as BYJK, but GREEN and BLUE channels are swapped, often resulting in better image quality.

b7b6b5b4b3b2b1b0
1st pixelYV (low)
2nd pixelYV (high)
3rd pixelYU (low)
4th pixelYU (high)

RGB-YUV conversion:

R = Y + UY = G/2 + R/4 + B/8
G = 5/4Y - U/2 - V/4U = R - Y
B = Y + VV = B - Y

5. BYUVP

Display type when the display mode uses YUV and palette mixed on the bit map

Same as BYJKP, but GREEN and BLUE channels are swapped, often resulting in better image quality.

b7b6b5b4b3b2b1b0
1st pixelYAV (low)
2nd pixelYAV (high)
3rd pixelYAU (low)
4th pixelYAU (high)

6. BD16

Display type when the display mode uses 16 bit data directly on the bit map (5 bits for each RGB plus Ys)

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background data are specified in 16 bit as follows.

b7b6b5b4b3b2b1b0
1st byteR (bit 2-0)B
 
2nd byteYsGR (bit 4-3)

7. BD8

Display type when the display mode uses 8 bit data directly on the bit map (3, 3, 2 bits for each RGB, Ys at ALL 0)

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background data are specified in 8 bit as follows.

b7b6b5b4b3b2b1b0
GRB

Although this mode is similar to the RGB332 mode of V9938, because of the way these values are mapped on the 15 bit palette, the resulting colors will differ slightly. For instance, pure grey is not possible.

RED and GREEN
3 bit value76543210
Palette value3127221813940
BLUE
2 bit value3210
Palette value3121110

8. BP6

Display type when the display mode uses 8 bit data on the bit map through the palette

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background colors are specified by a 6 bit palette value, bits 7-6 are ignored.

9. BP4

Display type when the display mode uses 4 bit data and offset 2 bits on the bit map through the palette

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background colors are specified by a 4 bit value plus a palette offset specified in R#13 PLTO5-4.

Note: When setting the color palette data in the B4, B5 and B6 modes, use the same value for each corresponding pair of palette addresses 0 to 31 and 32 to 63, that is, 0 and 32, 1 and 33 and so on.

10. BP2

Display type when the display node uses 2 bit data and offset 4 bits on the bit map through the palette

Cursor colors are specified by the Cursor Attribute Table plus a palette offset specified by R#28 CSPO5-2.

Background colors are specified by a 2 bit value plus a palette offset specified in R#13 PLTO5-2.

Note: When setting the color palette data in the B4, B5 and B6 modes, use the same value for each corresponding pair of palette addresses 0 to 31 and 32 to 63, that is, 0 and 32, 1 and 33 and so on.

SELECTION OF DISPLAY TYPE

PALETTE CONTROL (WRITE ONLY)

b7b6b5b4b3b2b1b0
R#13PLTMYAEPLTAIHPLTO5PLTO4PLTO3PLTO2

CURSOR SPRITE PALETTE OFFSET (WRITE ONLY)

b7b6b5b4b3b2b1b0
R#280000CSPO5-2

BACK DROP COLOR (READ/WRITE)

b7b6b5b4b3b2b1b0
R#1500BDC5BDC4BDC3BDC2BDC1BDC0

SCREEN MODE (READ/WRITE)

b7b6b5b4b3b2b1b0
R#6DSPMDCKMXIMMCLRM
DSPMPLTMCLRMYAE
(1) PP0,101-
(2) BYJK2220
(3) BYJKP2221
(4) BYUV2320
(5) BYUVP2321
(6) BD16203-
(7) BD8212-
(8) BP6202-
(9) BP4201-
(10) BP2200-

VRAM

P1 VRAM

Physical mapping: Addresses 00000-3FFFF in VRAM0 and 40000-7FFFF in VRAM1.

00000-3FDFF(Sprite) Pattern Data (Layer A)
3FE00-3FFFFSprite Attribute Table
40000-7BFFFPattern Data (Layer B)
7C000-7DFFFPNT(A) - Pattern Name Table (Layer A)
7E000-7FFFFPNT(B) - Pattern Name Table (Layer B)

Pattern Data is layed out like a 4bpp bitmap with 256 pixel width, cut up in 8x8 patterns. Pattern 0 1st line starts at 00000, Pattern 0 2nd line starts at 00080 etc., Pattern 1 1st line starts at 00004 etc., Pattern 32 1st line starts at 00400 etc.

Sprite Pattern Data is shared with background Pattern Data, but 16x16 Patterns are used.

The Name Table describes the entire Image Space, each Pattern is specified by a 16 bit value.

P2 VRAM

Physical mapping: Pattern Data even addresses (bit0=0) in VRAM0 and odd addresses (bit0=1) in VRAM1, Sprite Attribute Table in VRAM0 and PNT in VRAM1.

00000-77FFF(Sprite) Pattern Data
78000-7BDFF-
7BE00-7BFFFSprite Attribute Table
7C000-7FFFFPNT

Pattern Data is layed out like a 4bpp bitmap with 512 pixel width, cut up in 8x8 patterns. Pattern 0 1st line starts at 00000, Pattern 0 2nd line starts at 00100 etc., Pattern 1 1st line starts at 00004 etc., Pattern 64 1st line starts at 00800 etc.

Sprite Pattern Data is shared with background Pattern Data, but 16x16 Patterns are used.

The Name Table describes the entire Image Space, each Pattern is specified by a 16 bit value.

B1-B6 VRAM

Physical mapping: even addresses (bit 0=0) in VRAM0 and odd addresses (bit0=1) in VRAM1.

00000-7FDFFBitmap Data
7FE00-7FFFFCursor area (512 bytes)

Sprite and Cursor

Sprite (P1-P2)

Sprite size is 16x16, 125 sprites can be specified in the Sprite Attribute Table.

Up to 16 sprites can be displayed on one horizontal line.

  • Sprite Priority

Each sprites can be displayed in front or behind of the front layer.

Sprites that are listed first in the Sprite Attribute Table have a higher priority than those listed last.

  • Sprite Coordinate Space

Sprites exist in a seperate coordinate space from normal image space. Sprite coordinate (0,0) is always the top-left of the display area. The Sprite coordinate space is 1024x256 and display wrapping is done along its edges.

  • Sprite Attribute Table
b7b6b5b4b3b2b1b0
Offset +0Y
Offset +1PAT
Offset +2X (bit 7-0)
Offset +3SC5-4PD--X (bit 9-8)
Y: Sprite Y-coordinate (Actual display position is one line below specified)
X: Sprite X-coordinate
PAT: Sprite Pattern Number (Pattern Offset is specified in R#25 SGBA)
P: Sprite is in front of the front layer when P=0, sprite is behind the front layer when P=1.
D: Sprite is disabled when D=1
SC5-4: Palette offset for sprite colors.

Even though there is room for 128 sprite entries, only the first 125 are functional. The extra 12 bytes are unused by the VDP and can be used at the programmer's discretion.

Cursor (B1-B6)

Cursor size is 32x32, 2 cursors can be specified and displayed on screen.

When using a cursor (enabled in R#8 SPD), 512 bytes from the upper address of VRAM (7FE00-7FFFF) are used as the data area for the cursor. Display is also possible in this area, no skipping occurs during display.

  • Cursor Coordinate Space

Cursors exist in a seperate coordinate space from normal image space. Cursor coordinate (0,0) is always the top-left of the display area. The Cursor coordinate space is 1024x512 and display wrapping is done along its edges.

  • Cursor Attribute Table
b7b6b5b4b3b2b1b0
7FE00Y (bit 7-0)
7FE02-------Y (bit 8)
7FE04X (bit 7-0)
7FE06CC1-0EORD--X (bit 9-8)
+8 for 2nd cursor
Y: Cursor Y-coordinate (Actual display position is one line below specified, two lines for interlace)
X: Cursor X-coordinate
D: Cursor is disabled when D=1
CC1-0: Cursor Color value (Added to palette offset specified in R#28 CSPO5-2). If CC1-0=0 and EOR=0, clear color is used.
EOR: Cursor is displayed on screen with EOR color when EOR=1 and CC1-0=0
  • Cursor Pattern Table

Cursor Pattern Table is located at 7FF00 (7FF80 for 2nd cursor).

Cursor pattern is specified by a bit pattern of 128 bytes. Each bit is a pixel, and each line of 32 pixels is specified in 4 consecutive bytes.

COMMAND

Command execution method

After setting the necessary parameter register, set the command to the operation code register, and it will be executed. As soon as execution is started, the status CE is set to "1" and upon completion, it is reset to "0". Furthermore, the interrupt flag CE is set to "1".

Most commands are issued after the necessary registers out of the following parameters are set. Also some commands require output and input of the necessary data at and through the command data port after they are issued.

  1. Source (for transfer) coordinate
  2. Destination (for transfer) coordinate
  3. Transfer range coordinates
  4. Argument, logical operation and Write Mask
  5. Font color

The following commands are available:

OpcodeMnemonicOperation
0STOPCommand being executed is stopped.
1LMMCData is transferred from CPU to VRAM rectangle area.
2LMMVVRAM rectangle area is painted out.
3LMCMVRAM rectangle area data is transferred to CPU.
4LMMMRectangle area data is transferred from VRAM to VRAM.
5CMMCCPU character data is color-developed and transferred to VRAM rectangle area.
7CMMMVRAM character data is color-developed and transferred to VRAM rectangle area.
8BMXLData on VRAM linear address is transferred to VRAM rectangle area.
9BMLXVRAM rectangle area data is transferred onto VRAM linear address.
10BMLLData on VRAM linear address is transferred onto VRAM linear address.
11LINEStraight line is drawn on X/Y-coordinates.
12SEARCHBorder color coordinates on X/Y space are detected.
13POINTColor code of specified point on X/Y-coordinates is read out.
14PSETDrawing is executed at drawing point on X/Y-coordinates.
15ADVANCEDrawing point on X/Y-coordinates is shifted.

Write operations

Any command that writes to VRAM is using a Logical Operation (LOP) and a Write Mask (WM), specified as follows.

  • Logical Operation
b7b6b5b4b3b2b1b0
R#45000TPL11L10L01L00

WC (Write Color) is obtained through logical operation with SC (Source Color) and DC (Destination Color). The logical operation can be constructed as follows:

L00: WC value for the bit with SC=0 and DC=0.
L01: WC value for the bit with SC=0 and DC=1.
L10: WC value for the bit with SC=1 and DC=0.
L11: WC value for the bit with SC=1 and DC=1.
TP: When this bit is "1", the data with SC as all "0" (by pixel for the X/Y-coordinates and by byte for the linear address) is not transferred.

<Example>

Logical OperationL11L10L01L00
WC = SC1100
WC = SC0011
WC = SC AND DC1000
WC = SC OR DC1110
WC = SC EOR DC0110
  • Write Mask
b7b6b5b4b3b2b1b0
R#46WM (bit 7-0)
 
R#47WM (bit 15-8)

When drawing by means of commands, writing can be prohibited by bits. With WM (bit 7-0) and WM (bit 15-8), VRAM0 bit and VRAM1 bit are specified respectively. Then "1" is for write enable and "0" is for write prohibit.

In P1 mode, writing is prohibited on the side not specified as the transfer destination. (Layer "A":R#46, Layer "B":R#47)

LMMC (Logical Move to Memory from CPU)

Transfer data from CPU to VRAM rectangle area.

Set DX, DY, NX, NY, DIY, DIX and finally OP.

Output the necessary number of bytes to the command data port (P#2) as follows.

2bppb7b6b5b4b3b2b1b0
1st byte1st pixel2nd pixel3rd pixel4th pixel
 
2nd byte5th pixel6th pixel7th pixel8th pixel
...
4bppb7b6b5b4b3b2b1b0
1st byte1st pixel2nd pixel
 
2nd byte3rd pixel4th pixel
...
8bppb7b6b5b4b3b2b1b0
1st byte1st pixel
 
2nd byte2nd pixel
...
16bppb7b6b5b4b3b2b1b0
1st byte1st pixel color code low
 
2nd byte1st pixel color code high
 
3rd byte2nd pixel color code low
...

LMMV (Logical Move to Memory from VDP)

The VRAM rectangle area is painted out by using the color code.

Set DX, DY, NX, NY, DIY, DIX, FC finally and OP.

LMCM (Logical Move to CPU from Memory)

The data of the rectangle area in VRAM is transferred to CPU.

Set SX, SY, NX, NY, DIY, DIX and finally OP.

After this, the data for necessary number of bytes is read from the command data port (P#2). See LMMC for data format.

LMMM (Logical Move to Memory from Memory)

The rectangle area data is transferred from VRAM to VRAM.

Set SX, SY, DX, DY, NX, NY, DIY, DIX and finally OP.

CMMC (Character Move to Memory from CPU)

The data for each character is transferred from CPU to the rectangle area in VRAM.

Set DX, DY, NX, NY, DIY, DIX, FC, BC and finally OP.

Output the necessary number of bytes to the command data port (P#2).

The character data is similar to the MSX kanji ROM. It's provided in the order of upper left, upper right, lower left and lower right blocks (8 bytes each) of the 16x16 font.

1st
8 bytes
2nd
8 bytes
Font : 16 pixels vertical x 16 pixels horizontal
3rd
8 bytes
4th
8 bytes

CMMM (Character Move to Memory from Memory)

Data for each character is transferred from VRAM linear address to VRAM rectangle area.

Set SA, DX, DY, NX, NY, DIY, DIX, FC, BC and finally OP.

Data format is the same as for CMMC.

BMXL (Byte Move to XY from Linear)

The data on the linear address in VRAM is transferred to the rectangle area.

Set SA, DX, DY, NX, NY, DIY, DIX and finally OP.

BMLX (Byte Move to Linear from XY)

The data of the rectangle area in VRAM is transferred onto the linear address.

Set SX, SY, DA, NX, NY, DIY, DIX and finally OP.

BMLL (Byte Move to Linear from Linear)

The data on the linear address in VRAM is transferred onto the linear address.

Set SA, DA, NA, DIY, DIX and finally OP.

Note: BMLL operates on interleaved VRAM (as in B-modes) always, so that must be taken into account for using it in P1 or areas of P2. This means that source and destination addresses must be rotated one left and the correct Write Mask must be set.

LINE

A straight line is drawn from the reference point on VRAM.

Set DX, DY, MJ, MI, DIY, DIX, MAJ, FC and finally OP.

A border color (or non-border color) is searched for toward the right (or left) of the base point on VRAM.

Set SX, SY, DIX, NEQ, FC and finally OP.

Afterwards, BX (R#53,54) contains the border X-coordinate.

POINT

The color code at the base point on VRAM is read out.

Set SX, SY and finally OP.

The (SX,SY) color code can now be read from the command data port (P#2) as follows.

2bppb7b6b5b4b3b2b1b0
color codeunspecified
4bppb7b6b5b4b3b2b1b0
color codeunspecified
8bppb7b6b5b4b3b2b1b0
color code
16bppb7b6b5b4b3b2b1b0
1st bytecolor code low
 
2nd bytecolor code high

PSET

A point is drawn on VRAM. After that, the pointer can be advanced.

Set DX, DY, FC and finally OP, AYM, AYE, AXM and AXE.

DX, DY should not be set when using the current pointer.

ADVANCE

The drawing pointer is moved.

Set DX, DY, and finally OP, AYM, AYE, AXM and AXE.

DX, DY should not be set when using the current pointer.

V9990 REGISTER SPECIFICATIONS

I/O PORT SPECIFICATIONS

P#0VRAM DATA(R/W)
P#1PALETTE DATA(R/W)
P#2COMMAND DATA(R/W)
P#3REGISTER DATA(R/W)
P#4REGISTER SELECT(W)
P#5STATUS(R)
P#6INTERRUPT FLAG(R/W)
P#7SYSTEM CONTROL(W)
P#8-BKanji ROM
P#C-FReserved
  • VRAM DATA PORT (READ/WRITE)
b7b6b5b4b3b2b1b0
P#0VRAM Data
  • The data written in this port is written in the VRAM address specified by using R#0 to R#3. If writing to this port has taken place before completion of data write in VRAM, a WAIT signal is output.
  • By reading through this port, the VRAM address data specified by using R#3 to R#5 is obtained. If reading has taken place at this port before data preparation, a WAIT signal is output. When VRAM read address has been modified to prepare the VRAM address data at completion of data write to R#5, it must be written in R#5.
  • PALETTE DATA PORT (READ/WRITE)
b7b6b5b4b3b2b1b0
P#1Palette Data
  • The data written in this port is written in the internal palette RAM.
  • By reading through this port, the internal palette RAM data can be obtained. A WAIT signal is output till the data has been prepared.
  • The palette RAM address is specified by using R#14.
  • The data format is as follows.
b7b6b5b4b3b2b1b0
REDYS--R4R3R2R1R0
GREEN---G4G3G2G1G0
BLUE---B4B3B2B1B0
  • COMMAND DATA PORT (READ/WRITE)
b7b6b5b4b3b2b1b0
P#2Command Data
  • The command data is read and written through this port. Access to this port when the status TR bit is "0" while the command is being executed will result in an output of WAIT signal.
  • REGISTER DATA PORT (READ/WRITE)
b7b6b5b4b3b2b1b0
P#3Register Data
  • The data written in this port is written in the register specified by using P#4.
  • By reading through this port, the register data specified by using P#4 can be obtained.
  • REGISTER SELECT PORT (WRITE ONLY)
b7b6b5b4b3b2b1b0
P#4WIIRIIRegister No.
  • Register No. specifies which register is accessed via P#3.
  • The Register No. undergoes a plus "1" increment through P#3 access. However, when WII is "1", increment in writing at P#3 is prohibited and when RII is "1", increment in reading at P#3 is prohibited.
  • STATUS PORT (READ ONLY)
b7b6b5b4b3b2b1b0
P#5TRVRHRBD0MCSEOCE
  • Various types of status data can be read out as follows.
    • TR : Command data transfer ready. It is reset through P#2 access.
    • VR : Vertical non-display period. It is set when the drawing of VRAM content has stopped.
    • HR : Horizontal non-display period
    • BD : Border color detect at completion of SRCH command (becomes "1" when detected)
    • EO : In the second field period during interlace
    • CE : Command being executed
    • MCS: Content of P#7 MCS
  • INTERRUPT FLAG PORT (READ/WRITE)
b7b6b5b4b3b2b1b0
P#600000CEHIVI
  • The interrupt flags can be read out as follows.
    • CE : Command completion flag
    • HI : Display position flag
    • VI : Vertical display period completion flag
  • By writing "1", the related bit flag is reset.
  • SYSTEM CONTROL (WRITE ONLY)
b7b6b5b4b3b2b1b0
P#7000000SRSMCS
  • SRS : Writing "1" will set all ports except this one in "power ON reset" state. "0" should be written to cancel it.
  • MCS : The internally used master clock is selected.
    • 1 : MCKIN terminal
    • 0 : XTAL1 terminal

NOTE) XTAL1 terminal is selected when "power ON reset".

Register specifications

R#0-2VRAM WRITE ADDRESS(W)
R#3-5VRAM READ ADDRESS(W)
R#6,7SCREEN MODE(R/W)
R#8CONTROL(R/W)
R#9-12INTERRUPT(R/W)
R#13PALETTE CONTROL(W)
R#14PALETTE POINTER(W)
R#15BACK DROP COLOR(R/W)
R#16DISPLAY ADJUST(R/W)
R#17-24SCROLL CONTROL(R/W)
R#25SPRITE GENERATOR BASE ADDRESS(R/W)
R#26LCD CONTROL(R/W)
R#27PRIORITY CONTROL(R/W)
R#28CURSOR SPRITE PALETTE OFFSET(W)
R#32-52COMMAND(W)
R#53,54COMMAND(R)
  • VRAM WRITE ADDRESS (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#0VRAM Write Address (bit 7-0)
 
R#1VRAM Write Address (bit 15-8)
 
R#2AII0000VRAM Write Address (bit 18-16)
AII=0 : VRAM Write Address undergoes an increment of plus "1" only at the end of writing to P#0.
=1 : No increment.
  • VRAM READ ADDRESS (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#3VRAM Read Address (bit 7-0)
 
R#4VRAM Read Address (bit 15-8)
 
R#5AII0000VRAM Read Address (bit 18-16)
AII=0 : VRAM Read Address undergoes an increment of plus "1" only at the end of reading at P#0.
=1 : No increment.
  • SCREEN MODE (READ/WRITE)
b7b6b5b4b3b2b1b0
R#6DSPMDCKMXIMMCLRM
 
R#70C25MSM1SMPALEOILHSCN
DSPMDisplay mode selection
3: Stand-by mode (non-display, no VRAM refresh, kanji ROM readable)
2: Bit map mode (Bl-6)
1: P2 mode
0: P1 mode
DCKMPixel clock selection (used in combination with MCS of P#7)
MCS=0MCS=1
2: XTAL1MCKIN
1: XTAL1/2MCKIN/2
0: XTAL1/4*MCKIN/4(Number of division of master clock)
* Undocumented setting
XIMMSelection of number of pixels in X direction of image space (Number of pixels in Y direction is automatically calculated from XIMM and CLRM)
3: 2048 pixels
2: 1024 pixels
1: 512 pixels
0: 256 pixels
CLRMSelection of bit number per pixel
3: 16 bits/pixel
2: 8 bits/pixel
1: 4 bits/pixel
0: 2 bits/pixel
C25MSelection of 640X480 mode, valid when HSCN is "1".
1: B6 mode
0: other modes
SM1Selection of total number of vertical lines during non-interlace, NTSC
1: 263 lines (In combination with SM, the sub-carrier phase is inverted for each frame.)
0: 262 lines
SMSelection of horizontal frequency (invalid when in B5 and B6 modes)
1: 1H=fsc/227.5 (the sub-carrier phase is inverted for each line.)
0: 1H=fsc/228
PALSelection of PAL mode (invalid when in B5 and B6 modes)
1: Vertical frequency becomes PAL specification.
0: Vertical frequency becomes NTSC specification.
EOSelection of vertical resolution during interlace (invalid when in B5 and B6 modes)
1: Twice the vertical resolution during non-interlace
0: Same as during non-interlace
ILSelection of interlace mode (invalid when in B5 and B6 modes)
1: Interlace
0: Non-interlace
HSCNSelection of horizontal high scan mode
1: B5, B6 modes
0: other modes
  • CONTROL (READ/WRITE)
b7b6b5b4b3b2b1b0
R#8DISPSPDYSEVWTEVWM010
DISPScreen display enable
1: Display appears on screen according to the VRAM content.
0: Back drop color is displayed all over the screen.
SPDSprite (cursor) Disable
1: Sprite (cursor) is not displayed.
0: Sprite (cursor) is displayed.
YSEYS signal output enable
1: YS signal is output.
0: YS signal is not output. (YS terminal constantly remains as low level.)
VWTEVRAM serial data bus input/output control during digitization
1: Dummy write transfer is executed during horizontal retrace line interval. (The serial data bus of VRAM becomes an input terminal.)
0: Read transfer is executed during horizontal retrace line interval. (The serial data bus of VRAM becomes an output terminal.)
VWMVRAM write control during digitization
1: Write transfer is executed during horizontal retrace line interval. (The data input into the serial data bus of VRAM during display period undergoes write transfer.)
0: Write transfer is not executed.
  • INTERRUPT (READ/WRITE)
b7b6b5b4b3b2b1b0
R#900000IECEIEHIEV
 
R#10Interrupt Line (bit 7-0)
 
R#11IEHM00000Interrupt Line (bit 9-8)
 
R#120000Interrupt X
IECECommand end interrupt enable control
1: INT0 terminal becomes low level when CE flag of P#6 is "1".
0: INT0 terminal does not change according to CE flag.
IEVInterrupt enable during vertical retrace line interval.
1: INT0 terminal becomes low level when VI flag of P#6 is "1".
0: INT0 terminal does not change according to VI flag.
IEHDisplay position interrupt enable (Interrupt position is specified with Interrupt Line, Interrupt X and IEHM.)
1: INT1 terminal becomes low level when HI flag of P#6 is "1".
0: INT1 terminal does not change according to HI flag.
Interrupt Line: Specification of vertical position where display position interrupt occurs (Specified by means of line No. with the display start line as "0".)
Interrupt X: Specification of horizontal position where display position interrupt occurs (Specified by unit of 64 master clock with the display start position as "0".)
IEHMSelection of vertical position for display position interrupt
1: Every line (value of Interrupt Line is ignored)
0: Specified line
  • PALETTE CONTROL (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#13PLTMYAEPLTAIHPLTO5PLTO4PLTO3PLTO2
PLTMSelection of color palette mode
3: YUV mode
2: YJK mode
1: 256 color mode
0: Palette mode
YAESelection of YJK (YUV) and RGB mixing mode (valid when in YUV and YJK modes)
1: YJK (YUV) and RGB images are displayed together.
0: Only YJK (YUV) image is displayed.
PLTAIHPalette No. increment control at color palette read-out
1: R#14 palette pointer is not changed by P#1 read-out.
0: After P#1 read-out, R#14 palette pointer undergoes an increment.
PLTO5-2: Still screen palette No. offset
  • PALETTE POINTER (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#14PLTAPLTP
PLTA: Palette No.(color code)
PLTPSpecification of RGB
2: BLUE
1: GREEN
0: RED
After completion of access to P#1, an increment takes place by plus 1 only.
PLTP is used as a 0 to 2 ternary counter.
  • BACK DROP COLOR (READ/WRITE)
b7b6b5b4b3b2b1b0
R#1500BDC
BDC: Palette No. of back drop color
  • DISPLAY ADJUST (READ/WRITE)
b7b6b5b4b3b2b1b0
R#16ADJVADJH
ADJV: Vertical display position adjustment (4 bit signed)8 9 ... 1501 ... 6 7
(by line)DownCenterUp
ADJH: Horizontal display position adjustment (4 bit signed)8 9 ... 1501 ... 6 7
RightCenterLeft
(P1 and B1 by 1 pixel unit, P2, B2 and B3 by 2-pixel unit, B4, B5 and B6 by 4-pixel unit)
  • SCROLL CONTROL (READ/WRITE)
b7b6b5b4b3b2b1b0
R#17SCAY (bit 7-0)
 
R#18R512R2560SCAY (bit 12-8)
 
R#1900000SCAX (bit 2-0)
 
R#20SCAX (bit 10-3)
 
R#21SCBY (bit 7-0)
 
R#22*SDA*SDB00000SCBY (bit 8)
 
R#2300000SCBX (bit 2-0)
 
R#2400SCBX (bit 8-3)
* Undocumented setting
SCAY
SCAX
: As display start coordinates for layer "A" of P1 mode and screens of other modes, X/Y-coordinates in the image space are specified by pixels. (When 16bpp is used in B2 and B3 modes, however, bit 0 is ignored and X-coordinate is specified by 2-pixel unit.)
SCBY
SCBX
: For layer "B" of P1, X/Y-coordinates are specified in the same way as for SCAX/SCAY.
R512R256Number of roll page line in Y direction is specified.
10: Displayed page is rolled by 512 lines.
01: Displayed page is rolled by 256 lines.
00: Rolling by image space size takes place.
SDA: Set to "1" to disable layer "A" and sprites.
SDB: Set to "1" to disable layer "B" and sprites.
  • SPRITE GENERATOR BASE ADDRESS (READ/WRITE)
b7b6b5b4b3b2b1b0
R#250000SGBA17SGBA16SGBA150P1 mode
0000SGBA18SGBA17SGBA16SGBA15P2 mode
SGBA18-15: Base address of P1/P2 mode sprite pattern data
  • LCD CONTROL (READ/WRITE)

Omitted (keep register R#26 as 0)

  • PRIORITY CONTROL (READ/WRITE)
b7b6b5b4b3b2b1b0
R#270000PRYPRX
PRY: When in P1 mode, the display Y-coordinate to exchange display priority order between layers "A" and "B" is specified. A unit of 64 lines is used and in the range lower than the specified line (including that line), layer "B" has priority. At "0", layer "A" has priority throughout the range.
PRX: When in P1 mode, the display X-coordinate to exchange display priority order between layers "A" and "B" is specified. A unit of 64 pixels is used and in the range to the right of the specified pixel (including that pixel), layer "B" has priority. At "0", layer "A" has priority throughout the range.

<Example> When PRX=2 and PRY=2

1230(PRX)
064128192256(pixel)
164AABB
2128AABB
3192BBBB
0256BBBB(211)
(PRY)(pixel)
  • CURSOR SPRITE PALETTE OFFSET (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#280000CSPO5-2
CSPO5-2: Palette No. offset of cursor

COMMAND PARAMETER (WRITE ONLY, READ ONLY)

  • SOURCE X/Y-COORDINATE/LINEAR ADDRESS (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#32SX (bit 7-0)
SA (bit 7-0)
 
R#3300000SX (bit 10-8)
 
R#34SY (bit 7-0)
SA (bit 15-8)
 
R#350000SY (bit 11-8)
00000SA (bit 18-16)
SX: Specified with the X-coordinate of the image coordinate space (by pixels) and rolling to "0" occurs when a larger value than the image size is used for setting. (When in P1 mode, layer "A" is selected at SX9=0 and layer "B" at SX9=1.)
SY: Specified with the Y-coordinate of the image coordinate space (by pixels) and rolling to "0" occurs when a larger value than the image size is used for setting.
SA: Specified with the address on the VRAM map (by bytes).
  • DESTINATION X/Y-COORDINATE/LINEAR ADDRESS (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#36DX (bit 7-0)
DA (bit 7-0)
 
R#3700000DX (bit 10-8)
 
R#38DY (bit 7-0)
DA (bit 15-8)
 
R#390000DY (bit 11-8)
00000DA (bit 18-16)
DX: Specified with the X-coordinate of the image coordinate space (by pixels) and rolling to "0" occurs when a larger value than the image size is used for setting. (When in P1 mode, layer "A" is selected at DX9=0 and layer "B" at DX9=1.)
DY: Specified with the Y-coordinate of the image coordinate space (by pixels) and rolling to "0" occurs when a larger value than the image size is used for setting.
DA: Specified with the address on the VRAM map (by bytes).
  • TRANSFER PIXEL NUMBER XY/LINEAR/LINE MINOR, MAJOR (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#40NX (bit 7-0)
NA (bit 7-0)
MJ (bit 7-0)
 
R#4100000NX (bit 10-8)
0000MJ (bit 11-8)
 
R#42NY (bit 7-0)
NA (bit 15-8)
MI (bit 7-0)
 
R#430000NY (bit 11-8)
00000NA (bit 18-16)
0000MI (bit 11-8)
NX: The number of pixels in X direction of the image coordinate space is specified and rolling to "0" occurs when the specified range exceeds the image size. (Maximum value is 2048 pixels when all "0".)
NY: The number of pixels in Y direction of the image coordinate space is specified and rolling to "0" occurs when the specified range exceeds the image size. (Maximum value is 4096 pixels when all "0".)
NA: The number of bytes on the VRAM map is specified and rolling to address "0" occurs when the specified range exceeds the VRAM capacity. (Maximum value is 512K bytes when all "0".)
Note) 256 bytes when NA bit 7-0 are all "0".
MJ: The length of the longer side of the rectangle whose diagonal line is the same as the drawn line is specified by pixels. When the specified range exceeds the image size, rolling to "0" occurs.
MI: The length of the shorter side of the rectangle whose diagonal line is the same as the drawn line is specified by pixels. When the specified range exceeds the image size, rolling to "0" occurs.
  • ARGUMENT (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#440000DIYDIXNEQMAJ
DIY, DIX: The transfer direction (plus direction at "0" and minus direction at "1") from the base coordinates is specified. With BMXL and BMLX, however, the linear address specified side is fixed to "plus" and with BMLL, both X and Y are specified to the same direction.
NEQ: In the border color specification for SEARCH, "0" is for specified color detection and "1" is for non-specified color detection.
MAJ: In the line inclination specification for LINE, X is the longer side and Y the shorter side at "0" while Y is the longer side and X the shorter side at "1".
  • LOGICAL OPERATION (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#45000TPL11L10L01L00

See Command > Write Operations.

  • WRITE MASK (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#46WM (bit 7-0)
 
R#47WM (bit 15-8)

See Command > Write Operations > Write Mask.

  • FONT COLOR (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#48FC (bit 7-0)
 
R#49FC (bit 15-8)
 
R#50BC (bit 7-0)
 
R#51BC (bit 15-8)
FC: Color code of font data "1".
BC: Color code of font data "0"

Correspondence of bits 7-0 and bits 15-8 is the same as for Write Mask.

Depending on conditions of R#6 (CLRM), use the following data setting for FC and BC.
16bpp - Write 16 bit data.
8bpp - Write the same data for bit 7-0 and bit 15-8.
4bpp - Write the same data for bit 3-0, bit 7-4, bit 11-8 and bit 15-12.
2bpp - Fill with the same eight 2 bit unit data.

  • OPERATION CODE (WRITE ONLY)
b7b6b5b4b3b2b1b0
R#52OPAYMAYEAXMAXE

Set OP according to Command execution method.

With PSET and ADVANCE, the drawing point can be shifted after executing the command.

AXEAXM
00: (DX,DY) is used as a pointer.
01: The pointer is not shifted.
10: The pointer is shifted to the right by 1 pixel.
11: The pointer is shifted to the left by 1 pixel.
AYEAYM
00: The pointer is not shifted.
01: The pointer is not shifted.
10: The pointer is shifted down by 1 pixel.
11: The pointer is shifted up by 1 pixel.
  • SEARCH COMMAND BORDER COORDINATE (READ ONLY)
b7b6b5b4b3b2b1b0
R#53BX (bit 7-0)
 
R#5400000BX (bit 10-8)

When the border color is detected after the SEARCH command has been executed, the X-coordinate then can be read.

Timing

Vertical Timing (NTSC)Non-interlaceInterlace
SM1=0SM1=11st field2nd field
Vertical cycle262 H263 H262.5 H
Top retrace line erase period15 H16 H15 H15.5 H
Top border period *14 H
Vertical display period212 H
Bottom border period *14 H
Bottom retrace line erase period4 H4.5 H4 H
Vertical synchronous pulse width3 H
* The border period becomes the display period during over-scan.
Vertical Timing (PAL)Non-interlaceInterlace
1st field2nd field
Vertical cycle313 H312.5 H
Top retrace line erase period15 H14 H14.5 H
Top border period *41 H
Vertical display period212 H
Bottom border period *37 H
Bottom retrace line erase period5 H5.5 H5 H
Vertical synchronous pulse width3 H
* The border period becomes the display period during over-scan.
Horizontal Timing (SM=0)Time
When using 21MHzWhen using 14MHz
Horizontal cycle63.70 µs
Left retrace line erase period4.66 µs3.91 µs
Left border period2.61 µs0 µs
Horizontal display period47.68 µs53.64 µs
Right border period2.61 µs0 µs
Right retrace line erase period1.49 µs1.40 µs
Horizontal synchronous pulse width4.66 µs4.75 µs
Horizontal Timing (SM=1)Time
When using 21MHzWhen using 14MHz
Horizontal cycle63.56 µs
Left retrace line erase period4.52 µs3.77 µs
Left border period2.61 µs0 µs
Horizontal display period47.68 µs53.64 µs
Right border period2.61 µs0 µs
Right retrace line erase period1.49 µs1.40 µs
Horizontal synchronous pulse width4.66 µs4.75 µs

Notes to self:
- Investigate snow when updating palette during display time. Seems to be internal bus-conflict... Initial tests indicate snow appears at the exact time the palette registers are written, but ONLY if a color other than the backdrop color is currently visible. Other tests indicate snow does appear in the bottom border when palette was written after polling for VR.
- Investigate R#17 behaviour when writing during display time. Initial tests indicate this doesn't happen in P1 mode (layer "A" tested), and as soon as R#17 is written mid-screen, the screen 'starts over', meaning from that point scanline 0 and on will be drawn again but with the scroll offset applied. (note: slight jittery movement was encountered when writing R#17 during a certain point in border/retrace period, unconfirmed). Also interesting to see if forced blanking (display disable) has any effect.
- Investigate possible bug in LMMC command (possibly only CE bit) when using coordinates (0,0)-(255,211) in P1 mode.
- Investigate if BMLL's interleaved VRAM handling also counts for BMLX and BMXL (most likely so).


Last updated: . © by Patriek Lesparre. Hosted by The New Image.