It would appear that my certainty that the palette is not embedded in the tile attribute data was misplaced.
It is. It's just not separated and is just determined by the upper bits of the offset.
More coffee required. Or maybe less?
To use the "GFX/TileMap viewer (F4)" context as reference: TILEMAP 1/8 @ 120,8 = GFX0 #5A3:6D The 5A3 is literally a character offset which can be correlated easily in the memory view of VRAM ($e000) but where does the palettes offset of 6D come from? I've spent hours on this and got nowhe...
I am interested in seeing how things work beneath the hood on a MacOS build but I've run into issues compiling from the XCode IDE. If this is possible and someone here has done it to the extent where breakpoints can used etc. If be interested to know how much work is required to fix what I have here...