8-connected neighbor tile values. Bounds safe. 1 array allocation.
List<T> neighborTiles8(int idx) { final out = <T>[]; forEachNeighbor8(idx, (n) => out.add(_data[n])); return out; }