I'd find it great to have an amoeba in orange, or lightred, lightgreen...
Anyway, I would certainly use such feature, if it existed.
Moderator: Admin
Yes. Though one color can be set for each 8x8 (~8 Mhz clock) pixel character separately. The Atari is similar in this matter, and BD sets the amoeba to green independently from the rest of the cave. The C64 hardware can do this as well. The problem is that BD's scroll routine and animations take much CPU time and there was not enough left for this, hence this feature was removed during porting the game.Arno wrote:So, there are probably more C64 games having such a restriction? (i.e. one color is defined by 3 bits and the others by 4 bits.)
Right. That should work. I might even try implementing it that way in CLCK while staying compatible to earlier caves by changing the color bytes in the cave file accordingly.BTW, after thinking a bit about this, I found a way to partly eliminate the restriction for Boulder Dash. It must be possible to create a Graphics Set equal to the original graphics, with background color and wall/amoeba color swapped. Now the background is limited to 8 colors while 16 colors are available for the cave "glow".
Good point! The elements will flash at places where otherwise color 3 is used. This is not visible if that color is white. Although (if I remember correctly) the border of the screen also joins with the flash (unless the border is white, of course).Simon wrote:Yes, you could swap background color and color 3 throughout the whole character set. Although, then you would have to write an extra routine to draw the white flash that illuminates the cave background when the outbox opens.
That's a point. Maybe we should rotate the colors instead of swapping background with color 3. That way, color 1 becomes color 3, color 3 becomes background and background becomes color 1. Than the code would be easy to fix, since flashing color 1 is as simple as flashing the background.Arno wrote:The elements will flash at places where otherwise color 3 is used.
That was already fixed in the 1stB engine, thus it is no issue in CLCK either.But unfortunately there would be another side effect...The background color is also used as the background of the score bar, which is then hardly readable (or even not readable at all) in case of a bright color...

Really?LogicDeLuxe wrote:I afraid, this feature will not make it into my next engine. The flash would be the problem, taking too much time. I really don't want to stuck for a moment when the flash appears, throwing you completely out of the rhythm and losing a life every time this happens.
Code: Select all
set_color:
lda #9 ; 9 = white (in text multicolor mode)
ldx #31
loop: sta $D800+40,x
sta $D800+40+32,x
sta $D800+40+32*2,x
sta $D800+40+32*3,x
...
sta $D800+40+32*29,x
dex
bpl loop
Hm, so you think about HSP -- also called DMA-delay.LogicDeLuxe wrote:This one looks interesting: http://codebase64.org/doku.php?id=base: ... ioning_hsp.
It needs to be adapted for multinorm, though. I think, it would be a step in the right direction.
If I would write the outermost visible colum of the current cave position in each raster time, video RAM and color RAM alike, the raster time should be constant and there should be more time left then it currently is, am I right?
Yes, by using VSP (a combination of FLD and line crunching). But then you get at least 31 black rasterlines starting at the top of the screen area, so that reduces the visible cave area somewhat.LogicDeLuxe wrote:Any ideas how to get the vertical scrolling done in a similar fast way?
I see, I would pretty much loose what the faster scroll routine gains. Things obviously get more complicated than I thought. Do you think it would be worth rewriting the entire scroll routine? The reason nobody tried is most likely is because the current one works that well. The only thing optimized by Prof. Knible worth mentioning is that he removed the unneeded copying of self modifying code, an evidence the Peter Liepa had a ROM version in mind (which actually exist in the arcade machine, though it's the atari version). This does not change the speed, but save some RAM.Simon wrote:How are you going to update the screen for moving cave elements, e.g. a falling boulder? You would have to decide if the boulder at its current position is currently visible or not (or half visible or 1/4 visible?) and if its destination position is visible... Sure, it can be done, but I think that handling moving elements would eat a lot of cycles, then.