Ok, haven't fully read your posts yet, which I will now, but here is what I have currently, which does work:
var a = new Uint16Array(display2.buffer);
var b = new Uint16Array(8);
for(var i=0;i<a.length;i++)
{
var k = (i + 4) % 8;
var x = a[i];
// Uninterleave
var t = (x ^ (x >> 1)) & 0x2222; x = x ^ t ^ (t << 1);
t = (x ^ (x >> 2)) & 0x0C0C; x = x ^ t ^ (t << 2);
t = (x ^ (x >> 4)) & 0x00F0; x = x ^ t ^ (t << 4);
// Shift
b[k] = ((x & 0x0F0F) << 4) | ((x & 0xF0F0) >> 4);
}
var tmp = new Uint8Array(17);
tmp.set(new Uint8Array(b.buffer), 1);
i2c.writeTo(address, tmp);
the 'k' and 'shift' part of the sequence do the fixing of quadrents ('k' shifts up / down and the 'shift' code, shifts horizontally). Because I need to write one coordinates value to a different location, that is why I needed the 'b' array otherwise I'd overwrite values in 'a' I hadn't processed yet if I just tried to update 'a'.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Ok, haven't fully read your posts yet, which I will now, but here is what I have currently, which does work:
the 'k' and 'shift' part of the sequence do the fixing of quadrents ('k' shifts up / down and the 'shift' code, shifts horizontally). Because I need to write one coordinates value to a different location, that is why I needed the 'b' array otherwise I'd overwrite values in 'a' I hadn't processed yet if I just tried to update 'a'.