FPGA Arcade
Programmable Gaming Hardware
Vic-20 page by MikeJ

The complete original Commodore Vic-20 hardware, including the CPU, recreated in a single FPGA. The design is about 1400 Xilinx slices in size, and has a gate count of about 350K gates.

It would be possible to take advantage of the re-configurable nature of FPGA's and expand the capabilities of the original machine, for example greater colour depth, screen resolution or number of audio channels. This could even be achieved dynamically while the machine is running, and with careful mapping of the additional registers required, complete compatibility with the original could be maintained.

Particular thanks to Graham for risking his vintage machine and allowing me to stick logic analyser probes all over it.

A PS/2 keyboard interface is included, with a keymap the same as the popular 'Vice' software emulator. The design is believed to be complete, and I have run through lots of the examples in the original Programmers Reference Manual. It also contains a complete 6522 VHDL core which may prove useful in other machines of this vintage.

piccy
Actual photo taken by compiling and running the code here.



I have extended the code to run on the Xilinx Spartan 3E board (mentioned elsewhere on this site). The flash memory on board can be used to hold plug in cartridge images. For details of how to program the flash, please read the "readme" included in the release.

piccy
Jupiter Lander cartridge

(The banding is a camera artifact, it looks quite sharp in real life)

The four toggle switches on the Spartan 3E board are used as follows:
Switch 0 (bottom right) is used to switch between PAL (15KHz) output and VGA(31KHz).
Switch 1 when up (on) will ENABLE the external flash memory (plug in cart).
Switch 3 and 2 are a two bit bank select to the flash memory.
The push button on the rotary control is used for reset.

The VGA mode is generated with a scan doubler, but this won't work with all monitors as the vertical refresh rate in PAL is 50Hz, too low for some screens. You can connect the VGA output in 15KHz mode to a SCART TV. To make a VGA to SCART cable, get a standard VGA cable and chop the monitor end off. Wire it to a SCART connector with the following pinout :


  VGA Pin    Signal    SCART male pin  
  1Red  15
  6Red Ground  13
  2Green  11
  7Green Ground  9
  3Blue  7
  8Blue Ground  5
 13Horiz Sync  20
 14Vert Sync
(driven high)
  16
 10Ground  17,18


Please read the "README" file for documentation.

IMPORTANT NOTE :
NO ORIGINAL ROM CONTENTS ARE IN THIS DISTRIBUTION. YOU WILL NEED THE ORIGINAL/ALTERNATIVE ROM FILES


A simulation model of Vic-20 hardware
Copyright (c) MikeJ - jam 2008


THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

You are responsible for any legal issues arising from your use of this code.

You must agree to this disclaimer before downloading the code

Version 001 Spartan3e Release vic20_rel002_sp3e.zip
Version 001 Release vic20_001.zip

Email Address |  Privacy Policy