X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fmodex16.c;h=08ab753dbb075cf82d5186614a2bcb7c3659bc60;hb=c49e0bb8159b3a5bf318ef305f302f1f1df9524c;hp=e346ab3e6204f3167614ca22a067e3f086460ea5;hpb=064eedc8b51015c259233375ec7744e2bf20d65c;p=16.git diff --git a/src/lib/modex16.c b/src/lib/modex16.c index e346ab3e..08ab753d 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -4,7 +4,7 @@ #include #include #include -#include "src\lib\modex16.h" +#include "src/lib/modex16.h" byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ @@ -481,7 +481,7 @@ fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { /* handle the case where we just update */ if(iter == 0) { - modexPalUpdate2(palette); + modexPalUpdate1(palette); return; } @@ -494,7 +494,7 @@ fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { tmppal[i] = 63; } } - modexPalUpdate2(tmppal); + modexPalUpdate1(tmppal); iter--; dim += fade; } @@ -591,41 +591,32 @@ modexPalWhite() { /* utility */ void -modexPalUpdate(bitmap_t *bmp, word *i, word qp, word qr) +modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) { byte *p = bmp->palette; word w=0; word q=0; word qq=0; - word *qqqq; - static word a[256] = { 0 }; - word z=0,aq=0,aa=0; - word pp=0,aqpp=0,spee=0,ppee=0; + static word a[PAL_SIZE]; //palette array of change values! + word z=0, aq=0, aa=0, pp=0; -// if(qp>0) printf("(*i)=%02d\n", (*i)); 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); - (*qqqq)=(*i)-q; - //mxi1=PAL_SIZE/2; - //mxi2=PAL_SIZE; } else { q=(*i); qq=(*i)/3; - (*qqqq)=(*i)-(bmp->offset*3); - //mxi1=q+3; - //mxi2=q+3; // printf("q: %02d\n", (q)); - //printf("mxi1: %02d\n", mxi1); // printf("qq: %02d\n", (qq)); - //printf(" ((*i)-(bmp->offset*3))=%02d\n", ((*i)-(bmp->offset*3))); //printf(" (*i)-q=%02d\n", (*i)-q); -// printf("qqqq: %d\n",(*qqqq)); -// printf("================\n"); outp(PAL_WRITE_REG, qq); /* start at the beginning of palette */ } if((*i)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(((((*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])) { - 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)]); w++; break; } + else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) + { + //printf("qp=%d\n", qp); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp); + //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! + if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } + } else { - /*if(qp>0) - { - printf(" ((*i)-(bmp->offset*3))=%02d\n", ((*i)-(bmp->offset*3))); - }*/ - /*if(q>0 && qp==0) - { - printf("(*i)-q=%02d", (*i)-q); - 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)]); - }*/ - if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); - else outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3))]); - /*if(q>0 && qp==0) - { - qq=(*i)-q; - chkcolor(bmp, &q, &a, &aa, &z); - if(a[(*i)-q]==0) - { - printf("%d qqqq\n", qq); - outp(PAL_DATA_REG, p[(*i)-q]); - } - } + if(bmp->offset==0 && (*i)<3 && q==0) outp(PAL_DATA_REG, 0); else - { - outp(PAL_DATA_REG, p[(*i)-q]); - }*/ + if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); + else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); + printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } } } + //if(qp>0) printf("qp=%d\n", qp); + //if(qp>0) printf(" (*i)=%d\n", (*i)/3); } modexWaitBorder(); /* waits one retrace -- less flicker */ if((*i)>=PAL_SIZE/2 && w==0) @@ -676,157 +656,109 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word qr) for(; (*i)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(((((*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])) { - 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)]); w++; break; } + else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) + { + //printf("qp=%d\n", qp); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + printf(" %d's color=%d\n", (*i), (a[qp]-(bmp->offset*3)+qp)); + //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! + if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } + } else { - /*if(qp>0) - { - printf(" ((*i)-(bmp->offset*3))=%02d\n", ((*i)-(bmp->offset*3))); - }*/ - /*if(q>0 && qp==0) - { - printf("(*i)-q=%02d", (*i)-q); - 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)]); - }*/ if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); - else outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3))]); - /*if(q>0 && qp==0) - { - qq=(*i)-q; - chkcolor(bmp, &q, &a, &aa, &z); - if(a[(*i)-q]==0) - { - printf("%d qqqq\n", qq); - outp(PAL_DATA_REG, p[(*i)-q]); - } - } - else - { - outp(PAL_DATA_REG, p[(*i)-q]); - }*/ + else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); + printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } } } + //printf(" (*i)=%d\n", (*i)/3); } -// if(qp>0) printf("(*i)=%02d\n", (*i)); +printf("\nqqqqqqqq\n\n"); //palette checker~ - if(q>0 && qp==0/* && qr==0*/) + if(q>0 && qp==0) { - word qw=0; long lq; long bufSize = (bmp->width * bmp->height); - chkcolor(bmp, &q, &a, &aa, &z); - - printf("z=%d\n", z/3); - printf("q+z=%d\n", (q+z)/3); - printf("z-ppee=%d\n", (z-ppee)/3); -// printf("%d\n", (z-(z-ppee))/3); - printf("q=%d\n", q/3); - printf("aa=%d\n", aa); - - aq=0; pp = q; ppee=q;//(aq)*3; + pp = q; + //printf("1(*i)=%02d\n", (*i)/3); + //printf("1z=%02d\n", z/3); + chkcolor(bmp, &q, &a, &aa, &z, i); + //printf("2(*i)=%02d\n", (*i)/3); + //printf("2z=%02d\n", z/3); + aq=0; aqpee: - while(aqoffset for this spot! + NO! wwww + */ -// spee=0; + /* + Facking bloody point the values of the changed palette to correct values.... major confusion! wwww + */ - aqpp=(aq*3); - //aqpp=q*2; + //(offset/bmp->offset)*bmp->offset -// printf("\naq=%02d\n", aq); -// printf("spee=%02d\n\n", spee); - //printf("aqpp=%02d\n\n", aqpp/3); - for(lq=0; lqdata[lq]+bmp->offset==aq) + //printf("%02d ",bmp->data[lq]+bmp->offset); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); + //printf("%02d_", bmp->data[lq]+bmp->offset); + /*if(bmp->data[lq]+bmp->offset==aq) { //printf("%02d", bmp->data[lq]); //printf("\n%02d\n", bmp->offset); - //printf("%02d\n", a[aq]); - bmp->data[lq]=((bmp->data[lq]+bmp->offset)-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]-aqpp; +// printf("_%d ", bmp->data[lq]); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); } - else if(bmp->data[lq]+bmp->offset < z/3){ bmp->data[lq]+=bmp->offset; } - //printf("%02d ", bmp->data[lq]); + 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 ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); + } + else bmp->data[lq]+=(bmp->offset-aqpp); + }*/ + + //printf("%02d`", bmp->data[lq]); //if(lq > 0 && lq%bmp->width==0) printf("\n"); } -// if(spee==0) -// { - while(pp<=aqpp) - { - //if(pp<(z-1)) - /*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]);*/ - 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); - 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++; - } -/* bmp->palette[pp]= bmp->palette[pp+3]; - bmp->palette[pp+1]= bmp->palette[pp+4]; - bmp->palette[pp+2]= bmp->palette[pp+5];*/ - 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]); -/* printf("bmp: [%d]", bmp->palette[pp]); - printf("[%d]", bmp->palette[pp+1]); - printf("[%d]\n", bmp->palette[pp+2]);*/ - //aqpp=(pp-ppee); - //else if(pp==(z-1)) bmp->palette[pp]=0; - //if(pp