В RGB888 (по байту на цвет) цвета распределены в промежутке [0; 255]. Мы их нормализуем, т.е. сужаем этот промежуток до [0; 1], для чего делим цвета на их максимальное значение. Таким образом, из (64, 136, 80) мы получаем (0.25, 0.53, 0.31).
Далее нам надо «растянуть» нормализованные цвета на промежутки, которые используются в двухбайтовой модели. Для этого мы проводим обратную операцию — умножаем на максимальное значение. Тут всё зависит от модели: если это RGB555, то каждый цвет мы умножаем на 31. Если это RGB565, то зелёный мы умножим не на 31, а на 63.
Получаем:
RGB555(8, 16, 10)
RGB565(8, 33, 10)
Затем упаковываем эти значения в два байта. Тут тоже всё зависит от модели, а ещё от порядка байтов. Если разложить по битам получившиеся значения, будет следующее:
RGB555(01000b, 10000b, 01010b)
RGB565(01000b, 100001b, 01010b)
Значения могут отличаться на единицу или более, поскольку округлял и могла потеряться точность.
А дальше уже разберись, какая модель используется, какой порядок байтов, и куда эти биты записывать.