From: sparky4 Date: Fri, 3 Apr 2015 09:45:08 +0000 (-0500) Subject: working deeply in the palette updater! so i disabled the actual updating system and... X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=d2f92009f1d0cc3cf375c7d068a332190f350071;p=16.git working deeply in the palette updater! so i disabled the actual updating system and have it report to me the actual values that the palette updater works by~ --- diff --git a/data/g.pal b/data/g.pal index 43abfbf8..a234f82c 100644 Binary files a/data/g.pal and b/data/g.pal differ diff --git a/pcxtest.exe b/pcxtest.exe index 089ddf2b..22e267b7 100644 Binary files a/pcxtest.exe and b/pcxtest.exe differ diff --git a/scroll.exe b/scroll.exe index 38a9e171..a004f5bf 100644 Binary files a/scroll.exe and b/scroll.exe differ diff --git a/src/lib/modex16.c b/src/lib/modex16.c index 1886172c..f303ecf4 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -599,13 +599,17 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqpp) word q=0; word qq=0; word ii; - static word a[256] = { 0 }; - word z=0, aq=0, aa=0, pp=0; + static word a[PAL_SIZE/3]; + word z=0, aq=0, aa=0, pp=0, apee=0; sword aqpw; //printf("1 (*i)=%02d\n", (*i)/3); modexWaitBorder(); - if((*i)==0) outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + if((*i)==0) + { + memset(a, -1, sizeof(a)); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + } else if(qp==0) { q=(*i); @@ -628,16 +632,18 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqpp) //____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else if(((((*i)-q)%3==0) || ((qp>0)&&((*i)-(bmp->offset*3))%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) { - if(qp>0) + if(q>0) { - (*i)-=(aqpp*3); +/* (*i)-=(aqpp*3); aqpw=aqpp-1; outp(PAL_WRITE_REG, qq+(((*i)+(aqpw*3)-(bmp->offset*3))/3)); for(ii=aqpp; ii>0; ii--) { outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))]); outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+1)-(bmp->offset*3))]); - outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+2)-(bmp->offset*3))]); + outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+2)-(bmp->offset*3))]);*/ + printf("%d's color=%d\n", (*i)/3, ((*i)-(bmp->offset*3))); + printf("%d's color2=%d\n", (*i)/3, ((*i)-(bmp->offset*3))-(aqpp*3)); // printf("position = %d\n", qq+(((*i)+(aqpw*3)-(bmp->offset*3))/3)); /*if(qp>0){ //printf("[%d]", p[((*i)-q)]); printf("[%d]", p[((*i)-q)+1]); printf("[%d]", p[((*i)-q)+2]); printf("[%d]", p[((*i)-q)+3]); printf("[%d]", p[((*i)-q)+4]); printf("[%d]", p[((*i)-q)+5]); printf(" %d [%d]\n", (*i), p[((*i)-q)]); } printf("[%d]", p[((((*i)+((aqpp-ii)*3)))-(bmp->offset*3))]); @@ -651,11 +657,11 @@ printf(" %d [%d]\n",((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))/3, p[ //printf("ii=%d\n", ii); //printf("aqpp=%d\n", aqpp); //printf(" %d\n", ((*i)+((aqpp-ii)*3))/3); - } +// } //printf(" %d\n",((((*i)+((aqpp-ii)*3)))-(bmp->offset*3))); //printf(" %d\n",((((*i)+((aqpp-ii)*3))+1)-(bmp->offset*3))); //printf(" %d\n",((((*i)+((aqpp-ii)*3))+2)-(bmp->offset*3))); - //printf("(*i)=%d\n", (*i)); + printf(" (*i)=%d\n", (*i)/3); } //if(q>0) printf("%d\n", (*i)/3); //printf("[%d]", p[((*i)-q)]); printf("[%d]", p[((*i)-q)+1]); printf("[%d]", p[((*i)-q)+2]); printf("[%d]", p[((*i)-q)+3]); printf("[%d]", p[((*i)-q)+4]); printf("[%d]", p[((*i)-q)+5]); printf(" %d [%d]\n", (*i), p[((*i)-q)]); @@ -679,16 +685,18 @@ printf(" %d [%d]\n",((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))/3, p[ //____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else if(((((*i)-q)%3==0) || ((qp>0)&&((*i)-(bmp->offset*3))%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) { - if(qp>0) + if(q>0) { - (*i)-=(aqpp*3); +/* (*i)-=(aqpp*3); aqpw=aqpp-1; outp(PAL_WRITE_REG, qq+(((*i)+(aqpw*3)-(bmp->offset*3))/3)); for(ii=aqpp; ii>0; ii--) { outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))]); outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+1)-(bmp->offset*3))]); - outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+2)-(bmp->offset*3))]); + outp(PAL_DATA_REG, p[((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3)+2)-(bmp->offset*3))]);*/ + printf("%d's color=%d\n", (*i)/3, ((*i)-(bmp->offset*3))); + printf("%d's color2=%d\n", (*i)/3, ((*i)-(bmp->offset*3))-(aqpp*3)); // printf("position = %d\n", qq+(((*i)+(aqpw*3)-(bmp->offset*3))/3)); /*if(qp>0){ //printf("[%d]", p[((*i)-q)]); printf("[%d]", p[((*i)-q)+1]); printf("[%d]", p[((*i)-q)+2]); printf("[%d]", p[((*i)-q)+3]); printf("[%d]", p[((*i)-q)+4]); printf("[%d]", p[((*i)-q)+5]); printf(" %d [%d]\n", (*i), p[((*i)-q)]); } printf("[%d]", p[((((*i)+((aqpp-ii)*3)))-(bmp->offset*3))]); @@ -702,11 +710,11 @@ printf(" %d [%d]\n",((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))/3, p[ //printf("ii=%d\n", ii); //printf("aqpp=%d\n", aqpp); //printf(" %d\n", ((*i)+((aqpp-ii)*3))/3); - } +// } //printf(" %d\n",((((*i)+((aqpp-ii)*3)))-(bmp->offset*3))); //printf(" %d\n",((((*i)+((aqpp-ii)*3))+1)-(bmp->offset*3))); //printf(" %d\n",((((*i)+((aqpp-ii)*3))+2)-(bmp->offset*3))); - //printf("(*i)=%d\n", (*i)); + printf(" (*i)=%d\n", (*i)/3); } //if(q>0) printf("%d\n", (*i)/3); //printf("[%d]", p[((*i)-q)]); printf("[%d]", p[((*i)-q)+1]); printf("[%d]", p[((*i)-q)+2]); printf("[%d]", p[((*i)-q)+3]); printf("[%d]", p[((*i)-q)+4]); printf("[%d]", p[((*i)-q)+5]); printf(" %d [%d]\n", (*i), p[((*i)-q)]); @@ -722,7 +730,7 @@ printf(" %d [%d]\n",((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))/3, p[ } // if(q>0) - printf("2 (*i)=%02d\n", (*i)/3); +// printf("2 (*i)=%02d\n", (*i)/3); //palette checker~ if(q>0 && qp==0) @@ -732,112 +740,63 @@ printf(" %d [%d]\n",((((*i)+((aqpp-ii)*3))+((aqpp+ii)*3))-(bmp->offset*3))/3, p[ pp = q; //printf("1(*i)=%02d\n", (*i)/3); //printf("1z=%02d\n", z/3); - chkcolor(bmp, &q, &a, &aa, &z, i); + chkcolor(bmp, &q, &a, &aa, &z, i, &aqpp); //printf("2(*i)=%02d\n", (*i)/3); //printf("2z=%02d\n", z/3); - /*printf("z=%d\n", z/3); - printf("q+z=%d\n", (q+z)/3); - printf("z-ppee=%d\n", (z-ppee)/3);*/ - //printf(" q=%d\n", q/3); - //printf("aa=%d\n", aa); - - aq=0;//ppee=q; + aq=0; aqpee: while(aq<=aa) { - //printf("a[%02d]=(%d)", aq, a[aq]); - if(a[aq]==0) aq++; - else{ aqpp++; break; } +// printf("a[%02d]=(%d)\n", aq, a[aq]); + if(a[aq]==-1) aq++; + else{ apee++; break; } } //printf("(*i) =%02d\n", (*i)/3); //printf("z =%02d\n", z/3); - printf("aq=%02d\n", aq); - //printf("aqpp=%02d\n", aqpp); + //if(aqdata[lq]+bmp->offset==aq) + //printf("%02d_", bmp->data[lq]+bmp->offset); + /*if(bmp->data[lq]+bmp->offset==aq) { - //printf("\n%02d\n", bmp->data[lq]); + //printf("%02d", bmp->data[lq]); //printf("\n%02d\n", bmp->offset); - //printf("\naq= %02d\n", aq); - //printf("a[aq]= %02d\n", a[aq]); + printf("aq=%02d ", aq); + printf("a[aq]=%02d ", a[aq]); + printf("a[aq]+aqpp=%02d ", a[aq]+aqpp); + printf("a[aq]-aqpp=%02d\n", a[aq]-aqpp); //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]); - bmp->data[lq]=a[aq]; - printf("_%d ", bmp->data[lq]); - if(lq > 0 && lq%bmp->width==0) printf("\n"); +//++++ bmp->data[lq]=a[aq]-aqpp; +// printf("_%d ", bmp->data[lq]); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); } else if(bmp->data[lq]+bmp->offset < ((*i)/3)-aqpp) { if(bmp->data[lq]+bmp->offset >= aq) { - bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); - //printf("_%d \n", bmp->data[lq]); + bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3); + //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); } - else bmp->data[lq]+=(bmp->offset); - } + else bmp->data[lq]+=(bmp->offset-aqpp); + }*/ - //printf("%02d ", bmp->data[lq]); + //printf("%02d`", bmp->data[lq]); //if(lq > 0 && lq%bmp->width==0) printf("\n"); } - /*while(pp<=(aq*3)) - { - if(((pp/3)==aq || spee>0)) - { - printf("spee=%d\n", spee); - printf(" pp=%02d ", pp/3); - printf("old bmp: [%d]", bmp->palette[(pp-ppee)]); - printf("[%d]", bmp->palette[(pp-ppee)+1]); - printf("[%d]\n", bmp->palette[(pp-ppee)+2]); - //if(spee==0) printf("\npp=%02d\n\n", pp/3); - //if(bmp->cleaned==0) - //{ - bmp->palette[(pp-ppee)]= bmp->palette[(pp-ppee)+3]; - bmp->palette[(pp-ppee)+1]= bmp->palette[(pp-ppee)+4]; - bmp->palette[(pp-ppee)+2]= bmp->palette[(pp-ppee)+5]; - //} - if(spee==0) spee++; - } - printf(" pp=%02d ", pp/3); - printf(" bmp: [%d]", bmp->palette[(pp-ppee)]); - printf("[%d]", bmp->palette[(pp-ppee)+1]); - printf("[%d]\n", bmp->palette[(pp-ppee)+2]); - pp+=3; - //if(pp==(aq*3)) bmp->cleaned++; - }*/ - //printf(" aq=%02d\n", aq); //printf(" aa=%02d\n", aa);/ //update the palette~ - //printf(" aqpp= %d\n", aqpp); - //printf("1 pp= %d\n", pp/3); modexPalUpdate(bmp, &pp, 1, aqpp); (*i)=pp; - //printf(" (*i)=%d\n", (*i)/3); - //printf("2 pp=%02d\n", pp/3); - - //printf(".\n"); - //printf(" aqpp= %d\n", aqpp); - /*printf("aq= %02d\n", aq); - printf("aa= %02d\n", aa); - printf(" ppee= %02d\n", ppee);*/ if(aq0) - { - //printf("z=%d\n", z/3); - //printf("(*i)=%d\n", (*i)/3); - //(*i)+=3; -//---- printf("count=%d\n", count); - }*/ } } @@ -877,14 +836,16 @@ modexPalUpdate3(byte *p) //color checker~ //i want to make another vesion that checks the palette when the palette is being appened~ -void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i) +void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i, word *offset) { byte *pal; word zz=0; pal = modexNewPal(); modexPalSave(pal); //printf("q: %02d\n", (*q)); - + printf("chkcolor start~\n"); + printf("1 (*z): %d\n", (*z)/3); + printf("1 (*i): %d\n", (*i)/3); //check palette for dups for(; (*z)