text: #include "dither.h"
  
  const u8 dither_pattern[4][4] = {
    {  0,  8,  2, 10 },
    { 12,  4, 14,  6 },
    {  3, 11,  1,  9 },
    { 15,  7, 13,  5 }
  };
  
  void dither_band(u8 i, u8 *t, u8 *b)
  {
    if (i < 128) {
      *t = 127;
      *b = 0;
    } else {
      *t = 255;
      *b = 127;
    }
  }
  
  u8 dither(u8 i, i32 x, i32 y)
  {
    u8 t, b;
    dither_band(i, &t, &b);
  
    u8 c = dither_pattern[x % 4][y % 4];
  
    f32 r = ((f32)i - (f32)b) / 128.0f;
    f32 rc = (f32)c / 16.0f;
    if (r > rc) {
      return t;
    }
  
    return b;
  }