diff --git a/src/powder.c b/src/powder.c index be6735ad4..7cb414238 100644 --- a/src/powder.c +++ b/src/powder.c @@ -4922,48 +4922,57 @@ void rotate_area(int area_x, int area_y, int area_w, int area_h) { int cx = 0; int cy = 0; - char tpmap[area_h][area_w]; - char rtpmap[area_w][area_h]; - unsigned char tbmap[area_h][area_w]; - unsigned char rtbmap[area_h][area_w]; + unsigned tpmap[area_h][area_w]; + unsigned rtpmap[area_w][area_h]; + unsigned char tbmap[area_h/CELL][area_w/CELL]; + unsigned char rtbmap[area_w/CELL][area_h/CELL]; for(cy=0; cy0&&rtpmap[cy][cx]>8)<=NPART&&rtpmap[cy][cx]) + { + parts[rtpmap[(int)(cy+0.5f)][(int)(cx+0.5f)]>>8].x = area_x +cx; + parts[rtpmap[(int)(cy+0.5f)][(int)(cx+0.5f)]>>8].y = area_y +cy; + } + else + bmap[(area_y+cy)/CELL][(area_x+cx)/CELL] = rtbmap[cy/CELL][cx/CELL]; + } } } }