driven: fix font generation for sub-pixel

This commit is contained in:
Vince Weaver 2024-11-05 15:49:03 -05:00
parent 0f0f6c947a
commit 7a5e916634
4 changed files with 57 additions and 20 deletions

View File

@ -4,8 +4,9 @@ Intro: Driven animation
Atrus:
Talk1
Talk2 (TODO: have him look up?)
Scrolll text
Plasma
Plasma (have plasma expand to fill screen?)
Maglev:
@ -16,16 +17,22 @@ Mine-cart / Circles
Images
Spiky
233
Catherine?
Guy in void?
????Catherine?
Atrus standing by the rift saying to go for it?
White
Guy in void
Fade out?
Perhaps the ending has not yet been written...
We blame the party deadline for that...
Seriously, how is it mid November already...
Or perhaps we ran out of time before the deadline...
Credits
Add random stars that scroll up?
Add little visualizer to both sides?
Myst linking book float by?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -128,9 +128,12 @@ atrus_text:
do_scroll:
lda #0
sta SCROLL_START
do_scroll_again:
ldy #0
sty SCROLL_OFFSET ; FIXME: SCROLL_OFFSET
lda SCROLL_START
sta SCROLL_OFFSET ; FIXME: SCROLL_OFFSET
do_scroll_loop:
ldx SCROLL_OFFSET
lda scroll_text,X
@ -197,7 +200,24 @@ do_scroll_col_loop:
inc SCROLL_OFFSET
cpy #40
bne do_scroll_loop
; FIXME: also check keyboard
lda #200
jsr wait
inc SCROLL_START
lda SCROLL_START
cmp #80
beq do_scroll_done
jmp do_scroll_again
do_scroll_done:
rts
scroll_text:
.byte "THE@QUICK@BROWN@FOX@JUMPED@OVER@THE@LAZY@DOG"
scroll_text: ;0123456789012345678901234567890123456789
.byte "@@@@@@@@@@@@@@@@@@@@\]^_THE@QUICK@BROWN@"
.byte "FOX@JUMPED@OVER@THE@LAZY@DOG@PACK@MY@BOX"
.byte "@WITH@FIVE@DOZEN@LIQOUR@JUGS"

View File

@ -173,6 +173,7 @@ GUITAR_FRAME = $F4
; Atrus
SCROLL_OFFSET = $F0
SCROLL_START = $F1
; PLASMACUBE
;OUT1 = $F0

View File

@ -363,7 +363,7 @@ int main(int argc, char **argv) {
fprintf(stderr,"Loaded image %d by %d\n",xsize,ysize);
fprintf(stderr,"Using font offset of 0x%x\n",start_offset);
int pal[2],color=0,byte1,byte2;
int pal[2],color1=0,color2=0,byte1,byte2;
/* for now, assume 14x16 font starting at 0,0 */
for(row=0;row<2;row++) {
for(col=0;col<16;col++) {
@ -371,19 +371,28 @@ int main(int argc, char **argv) {
temp=0;
pal[0]=0,pal[1]=0;
for(x=0;x<14;x+=2) {
color=image[ (((row*18)+y)*280)+(col*14)+x];
switch(color){
case 0: temp=temp<<2; break;
case 1: temp=temp<<2; temp|=2; break;
case 2: temp=temp<<2; temp|=1; break;
case 3: temp=temp<<2; temp|=3; break;
case 4: temp=temp<<2; break;
case 5: temp=temp<<2; temp|=2;
color1=image[ (((row*18)+y)*280)+(col*14)+x];
color2=image[ (((row*18)+y)*280)+(col*14)+x+1];
temp=temp<<2;
switch(color1){
case 0: if ((color2==0) || (color2==4)) temp|=0;
else temp|=1;
break;
case 1: temp|=2; break;
case 2: temp|=1; break;
case 3: if ((color2==3) ||(color2==7)) temp|=3;
else temp|=2;
break;
case 4: if ((color2==0) || (color2==4)) temp|=0;
else temp|=1;
pal[x/7]=1; break;
case 6: temp=temp<<2; temp|=1;
case 5: temp|=2;
pal[x/7]=1; break;
case 7: temp=temp<<2; temp|=3;
case 6: temp|=1;
pal[x/7]=1; break;
case 7: if ((color2==3) || (color2==7)) temp|=3;
else temp|=1;
pal[x/7]=2; break;
}
}
byte1=(reverse_byte(temp>>6)&0x7f)|pal[0]<<7;