New Ultima Fan Project: Vecalabeth

Origin Systems historian and video game collector Pix has something of a soft spot for the Vectrex gaming console of yore, and recently acquired a Vectrex32 cartridge for it:

The Vectrex32 plugs into the Vectrex like any other cartridge. The difference is that it’s a 32 bit computer in its own right that takes over all the processing duties of the console. This means programs can now be written in BASIC instead of assembly and it vastly increases the processing power available. In addition, the cartridge can interface with terminal software on the PC via USB for easy debugging and copying the basic code over in the first place.

Pix being Pix, he decided to have a go at getting a game working using the Vectrex32, and selected Akalabeth — for which the BASIC source code is available — as that game.

Hopefully, the option to code in a high level language will produce a flood of new Vectrex games. I’m going to be giving it a go at least and the project I’m tackling is a reasonably faithful port of Akalabeth onto the platform all those line graphics were clearly meant for in the first place. How successful this will be is yet to be seen as there are still hardware limitations to deal with (mainly the number of lines and buttons). I thought I’d deal with the most difficult and interesting stuff first. I’ve built a single level 9×9 maze array to give me something to work with and set about getting the movement and graphics in place to wander around the level. This has proved considerably easier than I expected actually. You basically draw what’s on the left, middle, and right directly in front of the player, then scale it down a little and repeat, and just keep going scaling it down a little more for each grid of the map. No maths skills or understanding of 3D were needed whatsoever which is probably just as well.

Thus far, he has made what seems to be quite good progress on porting Akalabeth to the Vectrex. A first alpha version of the port was released on August 23rd, for example:

The biggest problems right now are:-

– The menus in the game are a little fiddly
– Some of the secret walls show up depending on your rotation
– I’ve done no real testing beyond a quick walkabout. There will undoubtedly be bugs/crashes.

As a rule button 1 uses things, i.e. open chest, climb ladder, enter dungeon, select on menu etc.. Button 2 attacks. Button 4 brings up the inventory from where you can equip weapons (as opposed to choosing a weapon every single time). You can also access your stats from that menu (I’ll move these to button 3 some time).

I’ve certainly learnt a lot about Akalabeth’s inner workings. The dungeon generation looks essentially broken to me but I’ve gone with what was in the original code unless I’m missing something. There is certainly no guarantee of having a route between ladders but going up/down a level will generate a new level every time so this is always an option if you are stuck. I need to go back and play Akalabeth and do some comparison which is something I’ve not tried as of yet.

Assuming I can get all the bugs out, I may have a look at adding some sound/music. I also quite like the idea of putting in Lands Of Lore/Stonekeep style 3D movement when walking around in the dungeons. Vector graphics make that sort of thing a lot easier and I reckon I could do something half decent with just some scrolling and scaling. First things first though and I’ll try to get everything that is there already working correctly.

A second alpha version soon followed:

This version improves the flickering and more importantly fixes a good number of game-breaking bugs. I’ve played this one far enough to complete about half the quests on the easiest level without noticing any major problems. There are a few bugs I’m aware of…

I went back and played the original Akalabeth again as a basis for comparison. There are clearly different versions of this as the usual Apple II version does not quite match the source code I’ve got or the code analysis. I was fairly certain I remembered it playing differently but it’s been years so I needed to go back and make sure. As such I’ve made some changes to make my version a bit more playable and bring it more in line with the later version.

And as of last month, a beta version is also available:

The remaining fixes turned out to be something I could knock off in what was left of my lunch break. I tested it all last night, fixed a couple of other bugs I found and did a complete playthrough of the game. Having played through it, I changed my mind about the hit point reward when you leave a dungeon and put them back how it was. The game is definitely beatable anyway so I’m calling it done for now. I may revisit it at some point but I reckon I’ve achieved what I wanted when I set out. I’ll fix issues if anyone reports anything but right now I’m dubious as to whether anyone else will ever even play it.

If you want to grab a copy of Vecalabeth to try for yourself, you can do so at Pix’s website, or from the newly-minted project entry here at the Codex.