diff --git a/plot.c b/plot.c index 2475a87..8aaef85 100644 --- a/plot.c +++ b/plot.c @@ -25,8 +25,17 @@ int16_t area_height = AREA_HEIGHT_NORMAL; // indicate dirty cells (not redraw if cell data not changed) #define MAX_MARKMAP_X ((320+CELLWIDTH-1)/CELLWIDTH) #define MAX_MARKMAP_Y ((240+CELLHEIGHT-1)/CELLHEIGHT) -uint16_t markmap[2][MAX_MARKMAP_Y]; -uint16_t current_mappage = 0; +// Define markmap mask size +#if MAX_MARKMAP_X <= 8 +typedef uint8_t map_t; +#elif MAX_MARKMAP_X <= 16 +typedef uint16_t map_t; +#elif MAX_MARKMAP_X <= 32 +typedef uint32_t map_t; +#endif + +map_t markmap[2][MAX_MARKMAP_Y]; +uint8_t current_mappage = 0; // Trace data cache, for faster redraw cells // CELL_X[16:31] x position @@ -794,7 +803,7 @@ mark_cells_from_index(void) { int t, i, j; /* mark cells between each neighber points */ - uint16_t *map = &markmap[current_mappage][0]; + map_t *map = &markmap[current_mappage][0]; for (t = 0; t < TRACES_MAX; t++) { if (!trace[t].enabled) continue; @@ -1343,8 +1352,7 @@ draw_all_cells(bool flush_markmap){ // START_PROFILE for (m = 0; m < (area_width+CELLWIDTH-1) / CELLWIDTH; m++) for (n = 0; n < (area_height+CELLHEIGHT-1) / CELLHEIGHT; n++) { - uint16_t bit = 1<