Лисья Нора
Обо мне
Привет! Это просто мой блог.
Я провозился с вычислением движения мыши целый день и это было почему-то сложно. Не знаю, отчего так, но мышь далась с трудом. Однако, она не только нарисована была, но еще и начала двигаться.
pusk.png
Интересная фишка. Чтобы мышь двигалась плавно, мало ее просто стирать и накладывать заново. Надо сделать так, чтобы во время рисования мышь не двигалась. Это, в общем-то, в однозадачной среде сделать совсем нетрудно. Когда рисуется какой-то определенный пиксель через pset() то тогда проверяется, не рисуется ли он в области мыши: в случае чего, сохраняется номер цвета в небольшой 12 на 21 буфер, откуда потом происходит извлечение цвета при перемещении мыши. И вот это было сделать крайне сложно!
Вообще, как я сделал.
- Если мышь куда-то двинулась, то вначале записать во временный буфер то что было за ней во время рисования пикселей
- Потом перерисовать старую область с учетом новых координат мыши. Это даст нам новый вид курсора (даже если частично)
- И перерисовать мышь в новой области, при этом если область частично перекрывается, то берется как раз то самое сохранненное значение цвета с первого шага
В итоге я получил плавное и непрерывное движение мыши без мерцаний, и при отрисовке любой картинки этот указатель ведет себя адекватно и ничего не перетирает.
И вообще я могу сказать, RISCV потрясающая по своей простоте архитектура. Благодаря ей я смог наконец, сдвинуться с той точки, на которой остановился в 2004 году. Спустя 22 года я наконец, продолжил создание заброшенной ОС.
Да, пуск кстати тоже уже смог сделать чтобы нажимался. Ничего не выдает, но кнопка уже реагирует на клик мыши. Теперь буду делать пока что простую игру. Допустим, сапер.
Теги: ОС, процессор
24 мар, 11:01