Sure. First up, if you're unaware, Fusion reads events from top to bottom, and executes actions within each event, from top to bottom.
Double click any action to view it a list of actions for that event. I changed the icon of the Area Pool list object to red for readability.
Please login to see this picture.
Please login to see this picture. : Set RandomNumber to Random(2)
Random(x) is function which generates a random number between 0 and x-1. So this assigns a global variable called RandomNumber to 0 or 1.
Please login to see this picture. : Set AreaName to List Line Text$("Please login to see this picture."), Random Number)
Retrieves the line from the Area Pool list object corresponding to the value of RandomNumber, and stores in a global string called AreaName. It's worth noting I changed the base index (the first line) to have an index of 0 rather than 1, the reason being Fast Loops have a base index of 0 and it makes comparisons easier. You change it in the List Object properties.
Please login to see this picture. : Delete line RandomNumber
Deletes the line corresponding to the value of RandomNumber
Please login to see this picture. : Add Line AreaName
Reinserts the deleted line, whose contents was stored in AreaName, back into the list object, at the end.
Please login to see this picture. : Create Please login to see this picture. at (0,0)
A weird bug I discovered while making this example is that if you load multiple external files into a List object within a single fast loop, only the first file is loaded!!! Until after the loop, when Fusion loads the most recent file you asked for. So, if you create and destroy a new List Object each time you need to load data into it, it solves the problem.
Please login to see this picture.: Load list file Apppath$ + "\Data\" + AreaName + ".txt"
Loads the external file AreaName.txt into the newly created List Object, this is the Area Contents list.
Please login to see this picture. : Start Loop "Blit" List NB Lines ("Please login to see this picture.") times
Starts a nested fast loop called "Blit", and runs it as many times as there are lines in the Area Contents list. Blit simply means to draw to the screen from a source, which is exactly what the Blit loop does, creates and pastes Active objects all about the place.
Please login to see this picture.: Destroy
Clean up. Destroys the current Area Contents list, ready to create the next one. It is very important to understand that this action isn't executed until the entire Blit loop (started above) has been executed.
So, that's it. This entire list of actions is contained within a single fast loop called MapGen, which is run 20 times at Start of Frame to create the map. If you change it to always, then on every single frame (60 times per second) you are creating 20 more Areas, a total of 1200 areas each second, and that's explains the framedrop. You may as well create the entire level at start up. And correct, the extra width is to accommodate for the gaps between areas.
If none of that made any sense, you should read Please login to see this link. article on fast loops. Good luck man.