21st of March 2022 DoD(1)

It has been a long time brewing… But I think I would now like to start trying to get Dungeons of Dagorath to the Vectrex.
I contacted the original copyright holder (Douglas Morgan) and I got his ok. I tried to get the original TRS sources – but due to different reasons that is at the time not possible.
There is a c++ port done by Richard Hunerlach, which has been ported to various systems – amongst others Thomas Sontowski did a port for the VecFever – so the game actually already runs on a Vectrex – but with additional hardware. Thomas also gave access to his converted source to me – I don’t know if I will use them though – I think for the beginning I’ll start out with one source… the one with the highest version number I could find “dod0.5.1.linux.tar.gz“.

I have as yet no clue whether this is at all possible to do. The whole game in c++ obviously runs in computer “RAM” and I don’t know if I can convert the code in a way that ~800 byte RAM (or so) are sufficient.

The game in c++ is actually very “un’c++’ish” – it uses single instance global variables (classes) and loads data in “funny” ways – it actually looks like a grep of a binary output put into a string and than loaded with a converter, example:

Utils::LoadFromDecDigit(A_VLA, "411212717516167572757582823535424");

This looks first strange – but if one dares to explores, the syntax becomes clearer. The thing is for my own port to vectrex I must obviously change this kind of initialization, because the way used now instantiates every data into RAM just by having it read from a string-stream.

But on the other hand… a more or less straight translation from original assembler sources has advantages, e.g. that I do not have to deal too deeply with c++’s object oriented stuff, like inheritances and such.

For the above kind of initialization I will write utilities… – but as of now I really can not glimps how much actual RAM the program will really NEED.

For today – I only looked at things, found out how the program starts – where the main loop is, and what should be initialized – and built a first raw vectrex main loop.

But just for the sake of the kind of exploration I will start… lets look at the example above.
What that:
Utils::LoadFromDecDigit(A_VLA, “411212717516167572757582823535424”);
actually is – it is the vector definition of the character “A”.
The four indicates the number of “quads” (rectangles), and following are 4 sets of quads, each with 4 coordinates (absolut coordinates) which range from 1-8.

With that knowledge and “mighty Vide” the first step to a conversion utility is not far away:

yes – vide can just do that!

A font – that I am pretty sure I will not use – to many vectors!

Tagged on: , ,

6 thoughts on “21st of March 2022 DoD(1)

  1. Phillip Eaton

    If you need more RAM and want to be “authentic”, you could consider using the Animaction cartridge memory map, with it’s extra 2k of RAM. 6116 in the original cart? I guess you could use something more modern, though. Paging might be tricky, if you need more than 32k ROM and for the extra RAM to be available for all pages.

    I’m excited to see what path you choose to make this happen!

  2. brandon

    This was my favorite game for my TRS-80 CoCo. I’ve been playing it on the VecFever, plays surprisingly well with the non-keyboard, joystick and 4 button control.

  3. Peer

    I like that you chose this game. I have never played it so far, and I completely missed it back in the eighties. I only learned about it when reading the Ready-Player-One book, and I put it on my check-it-out-when-you-have-time list.

    Are you planning to do this partly in C, like Telengard, or will you go pure assembler?

    Looking forward to reading more about your endeavors!

    1. Malban Post author

      I’ll go the Telengard way… the things I can do – I will do in “C”. If I need “speedup” I’ll go assembler, most likely for text output and graphics… thats it.

      If you would like to give it a try… test out Thomas port for the VecFever it is really well done (as usual)…

Leave a Reply

Your email address will not be published. Required fields are marked *

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