Undocumented Register Screenshots


Here are some pictures of the undocumented VDP register at $C0001C in action. The layout of this 16-bit, write-only register is:

    MSB             LSB
    -gfe ---d cba- ----
The description of the seven control bits (A through G) can be found here: To test the function of each bit, I used two 6-button controllers in tandem. While not shown here, the pictures are named on the button combinations used, which is:
    MSB             LSB
    -gfe ---d cba- ----
    MXYZ SACB MXYZ SABC <- Buttons used
    Pad #2    Pad #1
I may update this page in the future with results from mode 4, but I need to work on that more.




DCB = 000

Default image, no bits set. The white dots at the bottom are palette flicker caused by reloading CRAM during VBlank, as some of the bits cause CRAM to corrupt over time when set.



DCB = 001

All layers off. The vertical stripes are caused by interference, which to my knowledge is because the Genesis doesn't have a very good RGB to composite video converter in it. The problem is much more severe in this mode (320 pixels) than in the lower resolution 256 pixel mode. You can adjust the amount of interference somewhat through VDP register $0C.


DCB = 010
High priority plane B tiles are filled with a solid blue color and the white strips are palette flicker. (which go all the way down the screen) Plane A and B are off, but the outline of the high priority plane A tiles can be seen printed in the regular intensity backdrop color. Also, where the shadow/hilight operators in the column of 5 sprites overlap the background, the background pixels can be seen, but in the wrong colors.


DCB = 011
Both background planes are off, and now sprites have an outline in some color taken from CRAM, but it isn't the backdrop color. Notice that it is the same as what the high priority plane B tiles are colored in with, in the previous picture.


DCB = 100
Sprites off, but they are drawn in the regular intensity backdrop color. Notice the garbage in the overscan area is affected by H scrolling from plane A, and is printed in 16-pixel columns. The garbage printed in the sides is much different from what's printed in the top and bottom border areas.


DCB = 101
Not only does this setting disable plane B and sprites, but it seems to disable shadow/hilight processing too.


DCB = 110
This setting makes it look like all the planes have been logically OR'd together.


DCB = 111
Sprites and plane A disabled, plane B enabled. Notice that shadow/hilight processing has been disabled too. The first column has the wrong scroll value, it actually cannot be controlled in the 2-cell V scroll mode. Most all games end up masking this column to compensate, but some games (Shadow of the Beast) do not.


GFE = 111
The sprite disable bits in action. They all have the same results, even when combined.


A = 1
The entire playfield is filled with garbage. Sprites are visible but use the same invalid patterns. Notice how the background data repeats, as if the virtual screen size was too big. (like 128 or more columns)


AD = 11
Almost the same as above, but this setting shows graphics data in the entire display, except for the horizontal and vertical blanking periods.


Back to Index