I completely forgot a while back that I'd seen it reading from another important spot, $97d118. I looked into that and I understand things a bit better now.
In the "Tile Set" data I posted before, the first "Size" byte defines a number of bytes at the start of the data set that are used separately. Turns out these are used to do another lookup exactly the same way as we got to the Tileset from the world map.
So,
-One byte taken from tile data
-Multiplied by two, used to index read two bytes from $97DC08
-Those bytes get used as an index to read from $97D118
In the same way as last time I assembled this up into what I'm calling an "Object" table. You can see it here:
http://www.mediafire.com/view/4iyy7ewdev2jv1i/WorldMapObjectset.txt
Unlike the tile table from before, only the second "Size" byte seems to actually relate to the size of the data. The first one gets stored and used a long while later for something I haven't worked out yet. In any case, the Data in this new table is read by the program two bytes at a time in a loop, using the second "Size" byte as a counter.
Since luckily there are a few tiles in the game that have only these special object bytes and none of the data I saw used in my last post, I took a look at a few in game. For example, tile 05 northwest of Galys Pass, just before the 3-way intersection to the swamp. The tile's data looks like this:
TILE 05 - Index 82 00
Size 03 00
Data 0d 22 d1
OBJ 0D - Index 92 00
Size 01 05
Data 3d 00 43 00 80 3d 80 43 57 27
OBJ 22 - Index 70 01
Size 07 03
Data 80 80 00 80 00 00
OBJ D1 - Index dc 08
Size 02 07
Data 48 2c 46 35 4c 38 57 38 5f 30 5e 26 53 24
What it looks like in-game:
-A straight wall from the northwest corner to the southeast corner of the tile
-A road with uneven edges from the north-center to the east-center of the tile
-A small lakesouthwest of the road at approximately 0D40X, 22B0Y (ie/ 0140X, 00B0Y relative to the tile coordinates). It seems to be the same shape and size as some generic brown patches you commonly see on the ground.
What's interesting to note is that there's no trees or other similar scenery.
What I think this means is that major landscape features like walls and roads and water all come from a standard set of 256 represented by those single bytes at the start of the tile data. The REST of the tile data, each one-byte-two-byte pair must be a piece of scenery. I bet if I went out and picked a tile at random and counted every last bush and rock in it it would add up. I'm guessing a one-byte identity with a two-byte location? The location would have to be compressed to every two increments at least...
Just keeping you all updated on the off chance someone tries to help with something I already figured out.