Программирование VGA на C: получение координат x, y и смещение
Я программирую для 256-цветного VGA в C. Размер экрана у меня составляет 320*200, поэтому, исходя из этого предположения, я сделал свою функцию пикселя графика следующим образом:
void plot_pixel(int x, int y, byte color){
int offset;
offset = (y<<8) + (y<<6) + x;
VGA[offset]=color;
}
Я всегда переводю координаты x, y моего экрана в смещение видеопамяти. То, чего я изо всех сил пытаюсь достичь, - это сделать наоборот. Я хотел бы отправить функции смещение видео и вернуть мне массив с 2 целыми числами, соответствующими координатам x и y:
get_xy(int offset){
...
}
Тем не менее, я до сих пор не могу найти способ перевести одно число в два значения.
Может ли кто-нибудь помочь мне достичь этого?
1 ответ
Решение
Простая обратная математика. Лучше всего использовать unsigned
типы.
y = offset/((1<<8) + (1<<6));
x = offset%((1<<8) + (1<<6));