I did some googling and it looks like the issue is that the batch of trianges becomes so big the players' graphics cards can't handle it. (800 MB VRAM sound very small these days but ah well...)
So we need to reset the drawing batch every 1000 triangles. I tried to figure out the easiest way to do that and here's my idea.
1) Create a new script with the following function:
function triangles_break_batch(quads=6){ global.triangles_so_far += 2*quads if(global.triangles_so_far >= 1000){ global.triangles_so_far -= 1000 draw_flush() } }
2) Init global.triangles_so_far to 0 somewhere before any 3D drawing, e.g. In CONTROL's create event.
3) Put this new triangles_break_batch function at the start of the Draw event of all terrain objects. You'd compute "quads" like so,
//For a block or wall triangles_break_batch((image_xscale + image_yscale + image_xscale*image_yscale)*2) //For a floor or slope triangles_break_batch(image_xscale*image_yscale*2)