+
+ //palette checker~
+ if(q>0 && qp==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("q=%d\n", q/3);
+ printf("aa=%d\n", aa);*/
+
+ aq=0; pp = q; ppee=q;
+aqpee:
+ while(aq<=aa)
+ {
+ //printf("a[%02d]=(%d)", aq, a[aq]);
+ if(a[aq]==0) aq++;
+ else{ aqpp++; break; }
+ }
+
+/* printf("aq=%02d\n", aq);
+ printf("z=%02d\n", z/3);
+ printf("(z/3)-aqpp=%02d\n", (z/3)-aqpp);
+ printf("aqpp=%02d\n", aqpp);*/
+
+ for(lq=0; lq<bufSize; lq++)
+ {
+ if(bmp->data[lq]+bmp->offset==aq)
+ {
+ //printf("\n%02d\n", bmp->data[lq]);
+ //printf("\n%02d\n", bmp->offset);
+ //printf("\naq= %02d\n", aq);
+ //printf("a[aq]= %02d\n", a[aq]);
+ //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]);
+ bmp->data[lq]=a[aq];
+ //printf("_%d \n", bmp->data[lq]);
+ }
+ else if(bmp->data[lq]+bmp->offset < (z/3)-aqpp)
+ {
+ if(bmp->data[lq]+bmp->offset >= aq) bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;
+ else bmp->data[lq]+=(bmp->offset);
+ }
+
+ //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);
+ 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;
+ }
+
+ //update the palette~
+ //printf(" aqpp= %d\n", aqpp);
+ modexPalUpdate(bmp, &ppee, 1, aqpp);
+ (*i)=ppee;
+ //printf(" aqpp= %d\n", aqpp);
+ //printf(" ppee= %d\n", ppee);
+
+ /*printf(".\n");
+ printf("aqpp= %02d\n", aqpp/3);
+ printf("aq= %02d\n", aq);
+ printf("aa= %02d\n", aa);
+ printf(" ppee= %02d\n", ppee);*/
+
+ if(aq<aa){ /*printf("~~~~\n"); */ppee=q; aq++; goto aqpee; }
+ /*printf("ppee=%d\n", ppee);
+ printf("pp=%d\n", pp);
+ printf("q=%d\n", q);
+ printf("(*i)=%d\n", (*i));*/
+
+ }