VIC 20 Ultima III

Produced by: Aleksi Eeben
Website: VIC 20 Ultima III

VIC 20 Ultima III
VIC 20 Ultima III

The VIC 20 emulator image and player reference card for the VIC 20 port of Ultima 3.

VIC 20 Ultima III is a faithful conversion of the original Commodore 64 release of Ultima 3, based mainly on Ultima III Gold, an enhanced C64 version of the game released by MagerValp in 2007. Aleksi Eeben also drew inspiration from Sven Carlberg’s Game Boy Color remake of Ultima III, released in 2001.

There are several differences between these versions under the hood, however. Most of MagerValp’s enhancements were not included due to memory restrictions. The remaining code was disassembled, and text had to be adapted to the 12-character-wide text window. Baskerville decompression on-the-fly is used instead of Exomizer (a stylistic choice on the part of Aleksi Eeben), and a tailored map compression algorithm reduces the loading and saving times of Sosaria. Town maps, NPC data, and dialogue were combined into a single file per location to minimize searching and loading times. VIC 20-specific graphics and sound routines were created from scratch. The 16×16 pixel tile graphics from the C64 version were carefully adapted to 8×16 flat-pixel tiles in order to be compatible with the VIC 20.

The original music score by Kenneth W. Arnold is also included, but instead of relying on an SID chip or the VIC 20’s out-of-tune square voices, the output is generated by a custom-built software synthesizer. Although this synthesizer consumes approximately 60% of CPU time, the Ultima III game code still runs at an appropriate speed. This is achieved by using character mode instead of a hires bitmap, fitting the reduced-size tile graphics and text font into a single character set—allowing for up to 10 times faster rendering.

All in all, it’s an impressive feat of software engineering, fitting the entirety of Ultima 3 into the very limited hardware, graphical, and memory capabilities of the VIC 20 platform.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.