+draw_engine_dots(SDL_Surface *s) {
+ int i;
+ uint16_t c;
+ uint16_t *pixels = (uint16_t *) s->pixels;
+ int row_inc = s->pitch/sizeof(uint16_t);
+ int heatindex;
+
+ for(i = 0; i<MAXENGINEDOTS; i++) {
+ if(!edot[i].active) continue;
+ edot[i].x += edot[i].dx*t_frame - xscroll;
+ edot[i].y += edot[i].dy*t_frame - yscroll;
+ edot[i].life -= t_frame*3;
+ if(edot[i].life < 0
+ || edot[i].x<0 || edot[i].x >= XSIZE
+ || edot[i].y<0 || edot[i].y >= YSIZE) {
+ edot[i].active = 0;
+ continue;
+ }
+ if(pixel_hit_rocks(edot[i].x, edot[i].y)) { edot[i].active = 0; continue; }
+ heatindex = edot[i].life * 6;
+ c = heatindex>3*W ? heatcolor[3*W-1] : heatcolor[heatindex];
+ pixels[row_inc*(int)(edot[i].y) + (int)(edot[i].x)] = c;
+ }
+}
+
+void