Introduction
Having read a lot about MSX graphics and the lurking desire for better (and supported!) videographics my interest was sparked. In the past, I have worked with CPLD and FPGAs which are programmable logic chips. Based on the love for nostalgia and the once glorious MSX platform, I made a simple calculation: 1 + 1 = 2. Having made hardware for MSX in the past, I am familiar with its architecture, with its VDPs and their limitations. Since today, in 2008, FPGAs are quite affordable and have become extremely powerful. The quest for a high-performance retro graphics extention for the MSX platform begun. And so, VDPX was born.
What is VDPX?
VDPX is the project name for the design of a new graphics processor for the MSX, from the ground up, using a powerful FPGA chip. VDPX is developed by one person, me. The design is mostly based on my vision of what this graphics processor should be. However, all of its features are up for discussion to allow for feedback by MSX scene. If the graphics processor is to be supported by the community, it should offer functionality that is both wanted and desired by the community; ofcourse, within the design limits. The resulting graphics processor design will become something that ultimately fulfills your retro graphics desires for the MSX platform.
It is very important to realize that this project is not an attempt to leverage MSX computing to that of modern PCs. The goal is not to create stunning 3D graphics on an MSX machine. For that, use your PC and stuff a good NVIDIA or ATI card in there. No; VDPX instead builds on the vision of the 80's video chips. VDPX in no way will compare to any of the current PC graphics cards. VDPX is designed as a retro expansion for the MSX platform. However, compared to 80's videochips, VDPX will be blazingly fast and will offer capabilities that none of the V99xx video chips are able to match. VDPX is a project that will be built in the same retro spirit as the 80's chips.
VDPX is developed in conjunction with the MSX scene through forum feedback. This way, hopefully VDPX will become a widely supported hardware extention within the scene. Financially, the cost for the cartridge is trying to be kept down as much as possible.
How will VDPX work on an MSX?
VDPX is designed as a cartridge. The original, real MSX will not need to be modified in any way to make VDPX work. Instead, the video output of the MSX is routed into VDPX using a simple cable. VDPX will have two outputs. An RGB and Composite output. If feasible, maybe even a RF unit to hook up to a TV. Software can chose the video output, being the standard MSX video, or the VDPX output. VDPX will be compatible with any MSX, from MSX1 to MSX TurboR and will support both 50Hz and 60Hz refresh rates.
High-performance Retro Graphics.. gimme specs!
You probably skipped right down to this section, didn't you? Well. As explained, VDPX is in the same retro spirit as MSX itself was back in the days. This means, VDPX is a 2D graphics card supporting sprites. A lot of them. In addition to sprites, VDPX will also support layers whose viewports can be set for maximum flexibility. Now, a run-down of the specs:
- 256x216 resolution - 512KB VRAM - 1KB Palette RAM - 1KB Sprite Attribute RAM - 128 16x16 Sprites, no scan-line limitation (!) - 6144 256-Color Map Patterns (8x8 tiles) - 1024 256-Color Sprite Patterns (Shared with Map Patterns) - 8 Logical Maps (Name Tables), dimensions and positions can be customly set. - 16.7M Color Palette with individual and global 8-bit color fade registers. - Advanced Sprite Collision Detect - Memory Paged VRAM Access or through I/O ports with read/write pointers. - 200MByte/Sec raw VRAM read throughput - 150MByte/Sec raw VRAM write throughput - Zero Wait-States, CPU will not have to wait at all between writes (OTIR!) - Powerful blitter, colordepth conversion - And much more!
As you can see, VDPX is geared towards creating games foremost, but it will support a bitmapped mode just as much allowing for other types of applications to make use of high-performance retro graphics. VDPX allows for smoothscrolling in all directions, each layer independantly from the other. Sprites have a priority setting to determine their Z-axis position with respect to layers. VDPX's intention is to be a dream coming true for creating high-performance retro graphics on our beloved MSX platform.
Defining a Standard
Ultimately, VDPX should become something that offers features that's wanted by most of you. This topic is meant for just that: provide feedback for features that are in-line with the design. This means, no "I want 3D graphics" types of requests. Stay in the realm of retro graphics. Furthermore, I will update this thread as the design progresses. There will be plenty room for discussion, like blitter features and what not more. Who knows, VDPX may just become the graphics standard for today's MSX machines! All it needs is your support. And talking about support; as all details of VDPX are known, I can support any developer with all the informations and how-tos to create working software. It ultimately is a public-domain project. Built by and for the community. Whenever the day is there that the hardware works and is ready to be produced, it should come with manuals, programming examples, editor software and what not more that should aid in development of software for VDPX, be it games or applications.
Closing
It's quite a project to build, a very challenging project. However, it is a fun project to work on for me and especially if it becomes supported well enough I may put even more energy into it. There will probably be people who will loathe this initiative, people wanting MSX to stay just that: V99x8 with their limitations. For others this may be the answer to create the MSX software you could never create before due to the original VDPs limitations...
All in all, so far I enjoy the project and I hope you will do too!