I am not sure i understand the half tile suggestion, it seems that the sims (see the image in previous post) sub divided their main tiles to 4 smaller tiles, but even then the smaller tiles are still "shared" on a dividing wall.
Don't confuse looks with the underlying technical structure. Having line-like pixels in the sprite doesn't mean the tile is partitioned in that way. Maybe the artist wanted to have a "technical" look, and added some lines.
Having halftiles (in the way I proposed) means to me, a tile is either
[attachment=35888:splittiles.png]
Each half has mostly the same information you have now for a whole tile (so you have that information twice in the tile now). In addition, they have an additional field if the tile is split like the left or the right picture. Something like
class Tile {
... ///< Common values (valid for the entire tile).
bool topleft; ///< If set, split runs from top-left to bottom-right, else, it's from top-right to bottom-left.
Zone zoneA; ///< Zone of the 'A' subtile.
Image imageA; ///< What to draw for the 'A' subtile.
... ///< other A values.
Zone zoneB; ///< Zone of the 'B' subtile.
Image imageB; ///< What to draw for the 'B' subtile.
... ///< other B values.
};
I have no idea what data you want to store in a subtile, my data values are just illustration. Obviously, you can make a "SubTile" class (or "HalfTile" class), and have two instances here if that seems better to you.
As you might see, the tricky bit here is the "topleft" boolean, which affects how to interpret the subtile data. "zoneA" is valid for a different part of the tile, depending on the value of that bit. "imageA" must be drawn at a different spot, depending on that boolean, etc.
The quarter-tiles suggestion fixes that. Basically, you put both layouts on top of each other, and you end up with 4 quarter tiles, one for each edge. In code, you drop the "topleft" boolean, and make 2 more set of subtile daya, so you have a subtile for each quarter tile. Now zoneA always has the same meaning (eg zoneA would always be the quarter tile against the north-edge). The cost is having these 2 more sets of subtile-data that you must deal with.
since there are four possible directions involved here
I can see only 2 ways to split a tile. You can define "inside" or "outside" relative to a zone. Relative to zoneA, he outside would be whatever is stored in the second subtile (if zoneB != zoneA).
This morning I thought of another solution, which is way simpler. Simply omit split tiles from the game, and treat them as a decoration instead. You have split tiles, but an NPC can't use them, you cannot add a chair or table there, etc. It looks better than rectangular walls, but they are not that interesting to the game, so restrict gameplay to the full tiles only. This solves all your "I need to have double data in split tiles" problems, and simplifies stuff a lot, since a tile is simply a tile, but some tiles are unusable (but you have those anyway, I guess).