\r
#include "src/lib/16_vlpal.h"\r
\r
-void VL_palette(bitmap_t *bmp, word *i, word qp, word aqoffset)\r
+//color checker~\r
+//i want to make another vesion that checks the palette when the palette is being appened~\r
+void modexchkcolor(imgtestpal_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/, global_game_variables_t *gv)\r
{\r
- byte *p = bmp->palette;\r
+ byte *pal=&(gv->video.palette);\r
+ word zz=0;\r
+ //pal = modexNewPal();\r
+// modexPalSave(pal);\r
+ CHKCOLDBGOUT1\r
+ //check palette for dups\r
+ for(; (*z)<PAL_SIZE; (*z)+=3)\r
+ {\r
+ CHKCOLDBGOUT2\r
+ //if((*z)%3==0)\r
+ //{\r
+//---- if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5])\r
+ if((*z)==(*i))\r
+ {\r
+ CHKCOLDBGOUT3\r
+//0000 (*z)-=3;\r
+ break;\r
+ }\r
+ else for(zz=0; zz<(*q); zz+=3)\r
+ {\r
+ CHKCOLDBGOUT4\r
+ if(zz%3==0)\r
+ {\r
+ if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5]) //break if duplicate colors found in palette because it have reached the end of the current data of the palette\r
+ {\r
+// (*z)-=3;\r
+// (*i)-=3;\r
+ CHKCOLDBGOUT5\r
+ break;\r
+ }\r
+ else if(pal[zz]==pal[((*z)+(*q))] && pal[zz+1]==pal[((*z)+(*q))+1] && pal[zz+2]==pal[((*z)+(*q))+2])\r
+ {\r
+ CHKCOLDBGOUT6\r
+//++++ (*i)--;\r
+// (*z)--;\r
+ //expand dong here\r
+/*\r
+planned features that i plan to implement~\r
+image that has values on the pallete list!\r
+wwww\r
+no... wait.... no wwww\r
+*/\r
+ //for(zzii=0; zzii<3; zzii++)\r
+ //{\r
+ CHKCOLDBGOUT7\r
+ a[(((*z)+(*q)))]=zz;\r
+ //}\r
+ (*aa)=(((*z)+(*q)));\r
+ CHKCOLDBGOUT8\r
+ }\r
+ /*else\r
+ {\r
+ printf("================\n");\r
+ printf("zq: %d [%02d][%02d][%02d]\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]);\r
+ printf("zz: %d [%02d][%02d][%02d]\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]);\r
+ printf("z : %d [%02d][%02d][%02d]\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]);\r
+ printf("================\n");\r
+ }*/\r
+ CHKCOLDBGOUT9\r
+ }\r
+ }\r
+ }\r
+ CHKCOLDBGOUT10\r
+ //free(pal);\r
+}\r
+\r
+void\r
+VL_palette(imgtestpal_t *bmp, byte *p, word *i, word qp, word aqoffset, global_game_variables_t *gv)\r
+{\r
+ //byte *p = bmp->palette;\r
word w=0;\r
word q=0;\r
word qq=0;\r
{\r
q=(*i);\r
qq=(*i)/3;\r
-// printf("q: %02d\n", (q));\r
-// printf("qq: %02d\n", (qq));\r
- //printf(" (*i)-q=%02d\n", (*i)-q);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("q: %02d\n", (q));//\r
+ printf("qq: %02d\n", (qq));//\r
+ printf(" (*i)-q=%02d\n", (*i)-q);//\r
+#endif\r
outp(PAL_WRITE_REG, qq); /* start at the beginning of palette */\r
}\r
- if((*i)<PAL_SIZE/2 && w==0)\r
+ if((*i)<PAL_SIZE && w==0)\r
{\r
- for(; (*i)<PAL_SIZE/2; (*i)++)\r
+ for(; (*i)<PAL_SIZE; (*i)++)\r
{\r
//if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i]))\r
//____ 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\r
}\r
else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3))\r
{\r
- //printf("qp=%d\n", qp);\r
- //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]);\r
- printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp);\r
- //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit!\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("qp=%d\n", qp);//\r
+ printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]);//\r
+ printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp);//\r
+#endif\r
+ outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit!\r
if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; }\r
}\r
else\r
if(bmp->offset==0 && (*i)<3 && q==0) outp(PAL_DATA_REG, 0);\r
else\r
if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]);\r
- else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]);\r
- printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); }\r
- }\r
- }\r
- //if(qp>0) printf("qp=%d\n", qp);\r
- //if(qp>0) printf(" (*i)=%d\n", (*i)/3);\r
- }\r
- //modexWaitBorder(); /* waits one retrace -- less flicker */\r
- vga_wait_for_vsync();\r
- if((*i)>=PAL_SIZE/2 && w==0)\r
- {\r
- for(; (*i)<PAL_SIZE; (*i)++)\r
- {\r
-//____ 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\r
- 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]))\r
- {\r
- w++;\r
- break;\r
- }\r
- else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3))\r
- {\r
- //printf("qp=%d\n", qp);\r
- //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]);\r
- printf(" %d's color=%d\n", (*i), (a[qp]-(bmp->offset*3)+qp));\r
- //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit!\r
- if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; }\r
- }\r
- else\r
- {\r
- if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]);\r
- else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]);\r
- printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); }\r
+ else\r
+ { outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp);\r
+#endif\r
+ }\r
}\r
}\r
- //printf(" (*i)=%d\n", (*i)/3);\r
+#ifdef BEVERBOSEPALCHECK\r
+ if(qp>0) printf("qp=%d\n", qp);//\r
+ if(qp>0) printf(" (*i)=%d\n", (*i)/3);//\r
+ printf(" (*i)=%d\n", (*i)/3);\r
+#endif\r
}\r
\r
-printf("\nqqqqqqqq\n\n");\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("\nqqqqqqqq\n\n");\r
+#endif\r
\r
//palette checker~\r
if(q>0 && qp==0)\r
long lq;\r
long bufSize = (bmp->width * bmp->height);\r
pp = q;\r
- //printf("1(*i)=%02d\n", (*i)/3);\r
- //printf("1z=%02d\n", z/3);\r
- modexchkcolor(bmp, &q, &a, &aa, &z, i);\r
- //printf("2(*i)=%02d\n", (*i)/3);\r
- //printf("2z=%02d\n", z/3);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("1(*i)=%02d\n", (*i)/3);//\r
+ printf("1z=%02d\n", z/3);//\r
+#endif\r
+ modexchkcolor(bmp, &q, &a, &aa, &z, i, gv);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("2(*i)=%02d\n", (*i)/3);\r
+ printf("2z=%02d\n", z/3);\r
+#endif\r
aq=0;\r
aqpee:\r
while(aq<=aa)\r
{\r
-// printf("a[%02d]=(%d)\n", aq, a[aq]);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("a[%02d]=(%d)\n", aq, a[aq]);//\r
+#endif\r
if(a[aq]==-1) aq++;\r
else { aqoffset++; break; }\r
}\r
\r
//(offset/bmp->offset)*bmp->offset\r
\r
-\r
- //printf("%02d ",bmp->data[lq]+bmp->offset);\r
- //if(lq > 0 && lq%bmp->width==0) printf("\n");\r
- //printf("%02d_", bmp->data[lq]+bmp->offset);\r
+#ifdef BEVERBOSEPALCHECK\r
+ //printf("%02d ",bmp->data[lq]+bmp->offset);//\r
+ //if(lq > 0 && lq%bmp->width==0) printf("\n");//\r
+ //printf("%02d_", bmp->data[lq]+bmp->offset);//\r
+#endif\r
/*if(bmp->data[lq]+bmp->offset==aq)\r
{\r
- //printf("%02d", bmp->data[lq]);\r
- //printf("\n%02d\n", bmp->offset);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("%02d", bmp->data[lq]);//\r
+ printf("\n%02d\n", bmp->offset);//\r
printf("aq=%02d ", aq);\r
printf("a[aq]=%02d ", a[aq]);\r
printf("a[aq]+aqpp=%02d ", a[aq]+aqpp);\r
printf("a[aq]-aqpp=%02d\n", a[aq]-aqpp);\r
+#endif\r
//bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]);\r
//++++ bmp->data[lq]=a[aq]-aqpp;\r
-// printf("_%d ", bmp->data[lq]);\r
- //if(lq > 0 && lq%bmp->width==0) printf("\n");\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("_%d ", bmp->data[lq]);//\r
+ if(lq > 0 && lq%bmp->width==0) printf("\n");//\r
+#endif\r
}\r
else if(bmp->data[lq]+bmp->offset < ((*i)/3)-aqpp)\r
{\r
if(bmp->data[lq]+bmp->offset >= aq)\r
{\r
bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3);\r
- //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3);\r
+#ifdef BEVERBOSEPALCHECK\r
+ printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3);//\r
+#endif\r
}\r
else bmp->data[lq]+=(bmp->offset-aqpp);\r
}*/\r
-\r
- //printf("%02d`", bmp->data[lq]);\r
- //if(lq > 0 && lq%bmp->width==0) printf("\n");\r
+#ifdef BEVERBOSEPALCHECK\r
+ //printf("%02d`", bmp->data[lq]);//\r
+ //if(lq > 0 && lq%bmp->width==0) printf("\n");//\r
+#endif\r
}\r
\r
-//printf(" aq=%02d\n", aq);\r
-//printf(" aa=%02d\n", aa);\r
-\r
+#ifdef BEVERBOSEPALCHECK\r
+printf(" aq=%02d\n", aq);//\r
+printf(" aa=%02d\n", aa);//\r
+#endif\r
//update the palette~\r
- VL_palette(bmp, &pp, aq, aqoffset);\r
+ VL_palette(bmp, p, &pp, aq, aqoffset, gv);\r
(*i)=pp;\r
\r
if(aq<aa){ pp=q; aq++; goto aqpee; }\r