Ok, I got to playing around a bit last night, and worked up a sample of using DisplayLists and Pointer Records. Its a bit rough in the comments area, but it works quite well. Basically you can create any number of "rooms" you want in any direction defined. There very well may be an error, but I haven't found any when playing with it. Built in Lazarus, due to the use of windows controls, but could be converted to Delphi easy enough.

Even though I'm not using quick graphics (standard draw routines used), its pretty snappy. Graphics taken from Renears Tiles and are packaged with it. The TiledImage class may be of interest to some, as well as a few other things inside the zip file.

Download here