Mark, what is the "4 colour bit pair flipping" table used for
Yes, for drawing the left facing player. Because of their aligning , the flip is controlled by a single flag. (In the A800Win debugger, type 'F BC BC 1' to see the effect). The table is simply:
MNOP = PONM - e.g. 01001110 = 10110001
I assume all of the Barbarian is chars that get redefined every frame?
The draw area is actually 8 lines of chars. Although I'm using a 32 wide playfield for the demo the arrangement is for 40. 3 lines are arranged...
This repeats for the next 3 lines and then 2 more.
Each section has a DLI to use one of 3 charset banks.
The refresh works by redrawing the background and
then placing the sprites on top. Hence the need for a
double buffer. In all I'll need a minimum of 3 buffers
of 32*8*8 bytes for the battle area. The rest of the
screen is practically fixed.
IIRC, the 2 screens per game (4 in all) were Run-Length-Encoded
and reconstructed between levels (I'll need to check this).
I'll try and get these out for a later demo. If you see
the C64 version, the colours are very 'tactically' arranged.
Therfore they will be easy to replicate on the A8 with DLIs.
One idea I've had is to do the snake bodies (the heads will
be characters) as hw-sprites. These would be drawn one
per VBI. Has anyone else done something like this before?
Does it flicker, does the colour intensity drop, etc? I'm a bit
hessitant to use these though as I need the sprites for effects
and the servant. Perhaps the 5th colour and some on-the-fly
DLI colour changes would do the trick, although that will hit
the frame rate I guess.
Glad you liked the demo, I'll write up an explanation of the
sprite drawing when I have a bit more free time (I'm on holiday
in 2 weeks time, so probably then). Currently the drawing uses
another table to correct the untouched C64 data. I'd like to
remove this re-map and correct the original data instead.
At that point I'll probably give out the source-code.
(I use CA65/LD65 from the CC65 cross-dev suite but its
quite similar to the D/TASM everyone else seems to use)