Another game in progress by Aleski Eeben
Written by Aleski Eeben on his YouTube channel:-
I've been working on a VIC 20 port of the CRPG classic Ultima III, originally by Lord British in 1983. Here's a little capture of the current state of the conversion. 35K RAM expansion is required to run the game.
New since last update:
Combat
Disk functions: Load/save game state and Sosaria map, load city maps & shops
4 of 8 shops working: Weapons, Armour, Guild, Food
All Ultima III original music sorted in 5 song packs loaded on demand
Peer at Gem
Text formatting tidied up a bit for the 12-character-wide text box
What's yet to be implemented:
The remaining shops: Healer, Pub, Oracle, Stables (and Shrines)
Loading Ambrosia map when engulfed by the whirlpool
Character creation, forming a party, title screen
Dungeon view drawing
Unfortunately, there's some audio glitches in this video capture. Emulator + QuickTime capture combo was a bit too much for my old MacBook, and it was constantly struggling at 47-49 FPS. For example, you can hear the emulated disk drive sound stalling at 1:20... that's not supposed to be there. A bigger audio buffer in VICE could have helped.
Music is Ken W. Arnold's original player and songs routed to a 3-voice sawtooth softsynth at 8.5 kHz mixing rate. The softsynth takes approximately 60% of CPU time on VIC 20, but gameplay speed is still on par with C-64 (and Apple II), because the entire game is now running in character mode instead of hires. A 64x128 bitmap can be displayed in the map window for gems and dungeon views, but requires temporarily swapping out the tile graphics.
Sound FX are played by the original code, in true Apple II speaker bit bashing style!
Graphic tiles are hand-adapted from C-64's 16x16 shapes to VIC 20's 8x16 flat pixels.
Greatest thanks to MagerValp for sharing his Ultima III Gold project (2007) disassembly and information, without which this project would not have started materializing so quickly. This project was also inspired by Sven Carlberg's Game Boy Color port of Ultima III (2001).
https://youtu.be/21CWnRTdycs?si=Sljn9YP-_QgM62w3
Download
https://www.dropbox.com/scl/fo/qlsidzz9 ... gil0p&dl=0
Ultima III (work in progress) +35K
Moderator: Moderators
Ultima III (work in progress) +35K
Last edited by Rich on Thu Mar 20, 2025 4:45 am, edited 1 time in total.
Re: Ultima III (work in progress) +35K
An amazing achievement. I look forward to seeing the finished product!
"A slave is one who waits for someone to come and free him." -- Ezra Pound
Re: Ultima III (work in progress) +35K
I've been following him as well. Who would have thunk? It's mind-blowing. 

Re: Ultima III (work in progress) +35K
It's now been released
https://vic20ultima3.wordpress.com/
https://vic20ultima3.wordpress.com/
Re: Ultima III (work in progress) +35K
Sweet!
"A slave is one who waits for someone to come and free him." -- Ezra Pound
Re: Ultima III (work in progress) +35K
On Aleksi's website, it states:
"Baskerville decompression on-the-fly is used instead of Exomizer (mostly for vanity reasons), and a tailored map compression algorithm reduces the loading and saving times of Sosaria."
I actually used exomizer myself for my own game because Double Sided Games wanted me to compress the game from 4 disk sides to 2. But I could only achieve a space savings of 40%. But with that, that just allowed me to put in even more content
As for compressing the map, I also do that on my game. The 128 by 128 world map which is 16384 locations fits in 8192 bytes. That would have been fine if the game only had 16 tiles (to fit inside of a nibble), but my game used 32 tiles. So I had to use 1111 as a special character that uses the X+Y coordinates and then look up the less commonly-used tiles on a table.
I posted my source code to Chat GPT and asked it to describe how I compressed the map, and it stated that it uses "nibble encoding combined with an escape sequence for extended data."
There's been resurgence of late where hobbyists have been making their dream RPG projects for 8-bit systems as of late (Nox Archaist for the Apple II, Realms of Antiquity for the TI-99, including the VIC-20 ones). It would be quite fun to have a roundtable discussion among this exclusive group of developers to talk shop regarding the technical aspects regarding these games.
"Baskerville decompression on-the-fly is used instead of Exomizer (mostly for vanity reasons), and a tailored map compression algorithm reduces the loading and saving times of Sosaria."
I actually used exomizer myself for my own game because Double Sided Games wanted me to compress the game from 4 disk sides to 2. But I could only achieve a space savings of 40%. But with that, that just allowed me to put in even more content

As for compressing the map, I also do that on my game. The 128 by 128 world map which is 16384 locations fits in 8192 bytes. That would have been fine if the game only had 16 tiles (to fit inside of a nibble), but my game used 32 tiles. So I had to use 1111 as a special character that uses the X+Y coordinates and then look up the less commonly-used tiles on a table.
I posted my source code to Chat GPT and asked it to describe how I compressed the map, and it stated that it uses "nibble encoding combined with an escape sequence for extended data."
There's been resurgence of late where hobbyists have been making their dream RPG projects for 8-bit systems as of late (Nox Archaist for the Apple II, Realms of Antiquity for the TI-99, including the VIC-20 ones). It would be quite fun to have a roundtable discussion among this exclusive group of developers to talk shop regarding the technical aspects regarding these games.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
Re: Ultima III (work in progress) +35K
Thank you Aleski if you read this, Ultima III on the vic-20 sounds impossible, but now I have tried it myself!
Now I need to learn how to play the game, the player reference card included looks essential. Greatly appriciated for your hard work.

Re: Ultima III (work in progress) +35K
I'm enjoying this thoroughly. I intend on finishing it as well. While playing I just fell in love with that synth he used. It's perfect and I hope Aleski releases the source code for it.