As you might have read in my blog post from the 5th of July, I got back to do a little bit on this game. Oh, well, at least something like an hour every week :-). So really glacial slow going at the moment.
Nonetheless a little follow up on that last post. I included the “C” bankswitching into Vide, so that it is “working out of the box”.
I put that in quotes, because there are still some traps that one might run into, once I am finished with my current workings on Aklabeth, this may function as an example how to do bankswitching in C.
The one thing one really has to watch out for is RAM usage.
- you either have to use EXACTLY the same RAM layout in both banks, which in C needs some watching out for
- or in bank 0 do not use ANY global/static variables at all
- or do your memory management completly yourself
Since point 1 is (once set up) easiest to work with – I chose to use that option. But that basically means you must put all global variables into one header and include that header first in (both) your “main.c”.
(which actually is not a very good coding style)
Otherwise it gets extremely difficult to get them in sync.
One could also built “sections”, meaning that there are subset of “universal” variables (valid in all banks) defined in such a manor, and than each bank can have still its own set of “global” variables (valid only in the current bank).
But with this also the order is important, easierst is to define “universal” variables first.
(In Aklabeth (as of now) I only use universal variables so far).
Ok – that was point one I did for getting a version 1.0 if Aklabeth into the world.
Aklabeth will be a 64k 2-bank binary.
Next – since I thought it may take some time – I wrote an eMail to Richard Garriott, to ask whether “we” will be allowed to offer a cartridge version. But I guess he has better things to do with his time, than to answer emails as such (no grudges here) – but unless I hear from him, I’ll only make private cartridges for myself, and make the binary available.
Aklabeth is a short game, or … a long game… however you’d like to look at it. You can finish a game in a couple of few hours – which is VERY short for a RPG. On the other hand – nowadays I tend to play the vectrex only short periods of time – so in that regard it is a long game.
To compensate for being a “long” game – I now included code to save the current game to a DS 2431 eEprom (this already works!).
I still have to watch out for bankswitching code versus DS2431 access code, the thing is BOTH will be done using PB6. But I think if I do the bankswitching very seldom, and after the switch include a “wait” before accessing the eEprom, this will work out ok. At least for now it does!
Aklabeth will save the current game progress to a DS 2431 eEprom.
I want to include some music into the game. For now I “ripped” Ultima III music and included it. I am fairly certain, that including these is some sort of very grey area (at least). For my private versions that is probably ok (since I bought Ultima III at least 2 times 🙂 ). But doing a public version – I would be very hesitant. So if anyone might compose some music pieces in that old “midi – Ultima style” / or knows of free ym files (or Arkos Tracker)… I’d gladly incorporate those!
For now the music is working (from bank 0) and playing in the title screens.
Aklabeth will have music playing.
Right now, I am going thru the game and look for code pieces (large code pieces) which I can move completely to bank 0, so that for now both banks are equally used. You might ask, why I do that. Yea – bank 1 (the “normal” bank) was pretty much “full” – over 32k of binary material.
I want to be able to “configure” Aklabeth to different settings, right now what I think of is:
- Map size
The original map display is 3×3 – which I think is quite limitting – and having ported Paul Robsons version I am very used to the 7×7 display. But if anyone wants it more “original” than I would like to have this in the settings to be switchable.
(For the current implementation I use specialized graphic routines for the worldmap graphics – this means to implement this I must add an additional set of different drawing routines)
The original map icons are – hm – “original”, but to be honest… the mountains look like a squashed insect.
The player is a “+” sign… well if it were at least a “@” sign… But it is not too hard to draw a little man there…
A square as a tree is also not recognizable either… and why a dungeon entrance is represented by an “X” (not even an “O” – which I could associate with a hole in the ground)… is also quite beyond me.
Aklabeth will have settings to change the size/looks of the game.
Last thing I’d like to add is some more text/intro/help. There are version of the game which at least describe a tiny little bit how the game is working…
Aklabeth will have intro/help text.
If I do all of the above – which actually if I sit down and do it, will only take a couple of days… – I will call it Version V1.0RC and release it for beta testing…
One other thing:
Aklabeth will be a VECTREX binary – it will run on an unmodified Vectrex and not use special hardware!
(apart from being a 64kB bankswitched rom)