I am quite saddened by the lack of posts in this section
Could you share some tips maybe on getting the most out of the VDC? I am having trouble making graphics look nice due to the limited colours. How exactly do I get the 8x2 mode working? I have not seen a decent technical explanation of any of the trickier things. It took me long enough to work out how to just get colour graphics at all.
First, how do I actually get more than 2 colours in an 8x8 cell? I have a bitmap in the first memory area to draw the picture then the attribute bytes to set the 2 colours. How on earth do I get smaller than 8x8 colour cells?
Can you get more than 1 colour + background in text mode? If I could just get the same as in bitmap mode where each character has it's own background colour I would be happy!
I saw a VGA program for the 128. It didn't work on my monitor and I assume the timings are the issue, which registers do I change to alter the H and V timings to tweak it to work on my monitor?
This is just for starters. I've seen the Oblivion demo and I won't be happy till I push the VDC as far for a real game.
You should look at my VDC Mode Mania-demo which you can find on csdb.dk - there are 8x2 and 8x3 modes in there and the program is in BASIC mostly. If I remember correctly I commented the parts where the graphics-modes are set. Basically you use register 9 to set the char height to 2, but then you have to adjust the registers for vertical sync and height as well accordingly. This also works in text-mode, but only in bitmap-mode you can get background and foreground in an 8x2 area.
I am literally slapping my forehead going "Do'h!" at the moment reading that. I hadn't put two and two together that the attribute size matched the char size, I also hadn't connected the dots that you could make the char size smaller as well as larger. I use double height characters in my game to speed up the drawing (less writes) but the full impact of what I was doing hadn't dawned on me with regards to the bitmap mode.
In other words, which maybe you already figured out now, you can NOT have more than 2 colors in a cell with the VDC. So to get really colorful images (high color density), you need to use smaller cells, like 8x3 or 8x2 (or 8x1 with great effort).
Of course this means using more RAM and slower updates (for same total screen size)... which seems to be the opposite of your Boulderdash project (where you use bigger cells for faster updates).
What I've seen of Boulderdash so far looks pretty good, considering your 8x16 (I think) cell size. So in other words, if you want more colorful graphics, you will need smaller cell... but this may slow down the game speed (and thus not be possible). Of course "not possible" means using conventional techniques... you can often do the "impossible" by careful planning and coding
Don't know if any of that helps, but thought I should write some words of encouragement.
You're right of course, I am using 8x16 cells for Boulder dash to speed up drawing the screen. It works to the point the game is playable and left me with a little overhead to "finish" it. I am fighting overall speed and memory all the time but I am generally keeping the right side of both.
The problem I have with Text mode is it's not really 2 colours in 8x16, it's 1 colour in 8x16 and a background colour for the whole screen. Just a real multicolour text mode would make the whole thing look SO MUCH nicer. Sadly, even when you turn on the colour flag for bitmap it has no effect in text mode and instead of setting 2 colours in the attribute cell you set one colour and some crazy pointless attributes. If there was a secret way to hack the VDC to drop the attributes and do a second colour I would be very happy. I feel that is not the case however.
@pyrofer, you are correct... unlike VGA of IBM/PC, on C128/VDC text mode there is only two colors per cell.... one is global (every cell / background) and the other is unique...
It would REALLY be nice if VDC could have unique foreground AND background colors in text mode... but sadly this is not possible!
So, either you must restrict yourself to TEXT mode with global background + cell_specific foreground,
Or, you can use BITMAP mode, where every cell has 2 unique colors (background + foreground)... of course this means writing 8x data to V-RAM (assuming standard 8x8 cells). In your case, it would mean writing 16x data (if you switch from TEXT to BITMAP).
I imagine this would be too slow... but what if you used 8x8 or 8x4 cells instead? This would mean more TOTAL number of cells (thus slower, all else being the same), but it would also allow greater color density...
Which is best? High-speed with low color... or medium speed with more color? (Or low-speed with extended-color)?
Alas, this is the problem of Software Engineering... finding the perfect balance for YOUR particular project! I can't give you the answer, but hopefully this is something to think about??? (edit) A final piece of advice... don't waste too much time trying every other possible graphic mode... so far your game seems "acceptable" in 8x16 mode... so maybe you should keep 8x16 mode and concentrate on everything else (sound, scoring, speed).
Then, when/if, you make a perfect game with 8x16 text mode, you can take the time to experiment with other video modes...
Just speaking for myself, but I would love to play a GOOD game (nice speed, sound, etc.), rather than a "cool" game with "uber" graphics but poor speed and bad audio...
Playing with other modes to see what else I can do. The flickering smooth scroll register bug is killing me atm. Been away at my parents and annoyingly the SCART TV here doesn't switch into RGB mode so I haven't done any of the testing I wanted and the VGA monitor (2 of them!) won't work with the VGAmania demo I wanted to try. I turned on my O'Scope to check the timings and it blew up. Not a good weekend. I wan't to play with VGA timings on the VDC to see if I can get it to work on most monitors and then I might do a smooth scrolling game in colour bitmap mode in VGA for the C128 VDC. Just for kicks.