Make sprite indices 1-based, not 0-based. Add screen:grab(sx, sy, sx2, sy2, dx, dy, dest) for reading back the screen buffer. Rename getTile/setTile/solidRect in plum.Tilemap to get/dot/fillRect. Expose tilemap:line(x, y, x2, y2, tile) and tilemap:clear(tile).