second: more box optimization

This commit is contained in:
Vince Weaver 2023-10-01 01:28:13 -04:00
parent 7054084a9e
commit 4d1b567fe5
2 changed files with 20 additions and 7 deletions

View File

@ -19,15 +19,15 @@ todo, compressed:
522 bytes: try9: optimize HLIN to HLIN_ADD variants 522 bytes: try9: optimize HLIN to HLIN_ADD variants
506 bytes: try10: sort types per color 506 bytes: try10: sort types per color
498 bytes: try11: sort HLIN by Y1 498 bytes: try11: sort HLIN by Y1
431 bytes: try12: with don't cares
TODO: TODO:
Add don't cares Add don't cares
Try all color combos Try all color combos
Sort the color results to have consecutive HLINs together
MOVE PLOTS one line before HLIN MOVE PLOTS one line before HLIN
Possible size boxes
48x40,39,38....1

View File

@ -168,15 +168,23 @@ int create_using_boxes(void) {
for(box=0;box<NUM_BOX_SIZES;box++) { for(box=0;box<NUM_BOX_SIZES;box++) {
int xx,yy,box_found; int xx,yy,box_found,color_found;
for(row=0;row<48-box_sizes[box].y;row++) { for(row=0;row<48-box_sizes[box].y;row++) {
for(col=0;col<40-box_sizes[box].x;col++) { for(col=0;col<40-box_sizes[box].x;col++) {
box_found=1; box_found=1;
color_found=0;
for(yy=0;yy<box_sizes[box].y;yy++) { for(yy=0;yy<box_sizes[box].y;yy++) {
for(xx=0;xx<box_sizes[box].x;xx++) { for(xx=0;xx<box_sizes[box].x;xx++) {
if (framebuffer[xx+col][yy+row]!=current_color) {
if (framebuffer[xx+col][yy+row]==current_color) {
color_found=1;
}
if ((framebuffer[xx+col][yy+row]==background_color)||
(framebuffer[xx+col][yy+row]==0xff))
{
box_found=0; box_found=0;
break; break;
} }
@ -184,7 +192,10 @@ int create_using_boxes(void) {
if (!box_found) break; if (!box_found) break;
} // yy } // yy
if (box_found) { if ((box_found)&&(color_found)) {
fprintf(stderr,"Found box c=%d %d,%d to %d,%d\n",
current_color,col,row,col+box_sizes[box].x-1,
row+box_sizes[box].y-1);
primitive_list[current_primitive].color= primitive_list[current_primitive].color=
current_color; current_color;
primitive_list[current_primitive].x1=col; primitive_list[current_primitive].x1=col;
@ -201,9 +212,11 @@ int create_using_boxes(void) {
} }
for(yy=0;yy<box_sizes[box].y;yy++) { for(yy=0;yy<box_sizes[box].y;yy++) {
for(xx=0;xx<box_sizes[box].x;xx++) { for(xx=0;xx<box_sizes[box].x;xx++) {
if(framebuffer[xx+col][yy+row]==current_color) {
framebuffer[xx+col][yy+row]=0xff; framebuffer[xx+col][yy+row]=0xff;
} }
} }
}
} }