How to Rotate / Mirror / Flip a ds_grid in GameMaker
Flip ds_grid Horizontal (Mirror):
(replace new_grid and old_grid with the ds_grid's you want to change)
var size_h = ds_grid_width(old_grid)
var size_v = ds_grid_height(old_grid)

ds_grid_resize(new_grid,size_h,size_v)

for (var i = 0; i < size_h; ++i) {
    for (var j = 0; j < size_v; ++j) {
	    new_grid[# i,j] = old_grid[# size_h-i-1, j]
	}
}
	
Flip ds_grid Vertically:
(replace new_grid and old_grid with the ds_grid's you want to change)
var size_h = ds_grid_width(old_grid)
var size_v = ds_grid_height(old_grid)

ds_grid_resize(new_grid,size_h,size_v)

for (var i = 0; i < size_h; ++i) {
    for (var j = 0; j < size_v; ++j) {
	    new_grid[# i,j] = old_grid[# i, size_v-j-1]
	}
}
	
Rotate ds_grid Clockwise 90 degrees:
(replace new_grid and old_grid with the ds_grid's you want to change)
var size_h = ds_grid_height(old_grid)
var size_v = ds_grid_width(old_grid)

ds_grid_resize(new_grid,size_h,size_v)

for (var i = 0; i < size_h; ++i) {
    for (var j = 0; j < size_v; ++j) {
	    new_grid[# i,j] = old_grid[# j, size_h-i-1]
	}
}
	
Rotate ds_grid Counter Clockwise 90 degrees:
(replace new_grid and old_grid with the ds_grid's you want to change)
var size_h = ds_grid_height(old_grid)
var size_v = ds_grid_width(old_grid)

ds_grid_resize(new_grid,size_h,size_v)

for (var i = 0; i < size_h; ++i) {
    for (var j = 0; j < size_v; ++j) {
	    new_grid[# i,j] = old_grid[# size_v-j-1, i]
	}
}
	
Rotate ds_grid 180 degrees:
(replace new_grid and old_grid with the ds_grid's you want to change)
var size_h = ds_grid_width(old_grid)
var size_v = ds_grid_height(old_grid)

ds_grid_resize(new_grid,size_h,size_v)

for (var i = 0; i < size_h; ++i) {
    for (var j = 0; j < size_v; ++j) {
	    new_grid[# i,j] = old_grid[# size_h-i-1, size_v-j-1]
	}
}
	
Easy Difficulty
GameMaker Studio 2
By David Strachan