Обо мне
Привет! Меня зовут Лис и это мой блог. Здесь я могу ныть и страдать, писать про код и обо всем.
Декабрь 2024
ПнВтСрЧтПтСбВс
1
2345678
9101112131415
16171819202122
23242526272829
3031
Теги
Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

20 окт 2024 Вс Встроил VIDAC в DE0

Вчера понемногу делал видеопроцессор и медленно, но постепенно двигаюсь к конечной цели по видеоускорителю, к рисованию текстурированных прямоугольников и треугольников. Примерно набросал код растеризатора, но не проверял, боюсь, что там будет сложно, но что поделать, надо все же доделать как-нибудь. dash1
С утра сел и разметил новую память, встроил новый видеопроцессор в ПЛИС и проверил. Все работает как надо, у меня получилось сделать минимальный набор геометрических фигур, таких как рисование линии, кругов, прямоугольников.
Всего потрачено памяти:
  • 64K память программ
  • 128К видеопамять (2х буферная)
  • 64К видеопамять видак
  • 32К текстурная память
  • 4К шрифты
  • 1К палитра
Это составляет 293К памяти из 308К, то есть еще 15К памяти свободно. Видеопамять (да и текстурную тоже) можно использовать не только для хранения информации, но и для исполнения программ.
Вчера еще придумал довольно простой метод деления чисел, для текстуризации я пока что использовал деление максимум на 15, то есть, результат не может превышать это число, но можно сделать какое угодно, на самом деле, просто я специально сократил, чтобы не сильно место занимать в процессоре. Вместе с видаком и процессором 3548 ALM (или 7096 LE) было занято из 18480 ALM, то есть, всего 19% от площади кристалла.
Мне бы наверное все-таки хотелось сделать бы несколько видео и выложить их на сайте, по принципам работы процессора и компьютера. Начать с того, что такое двоичные числа и как они считаются, и заканчивая делением чисел.
Теги: Видак

19 окт 2024 Сб Закрашенный круг

Единственное мое достижение за день было нарисовать закрашенный круг. Скорость рисования такого круга уже приближается к КПД 100%, то есть, 25 млн точек в секунду, в отличии от простого рисования окружности, где этот показатель уменьшается вдвое, так что в каком-то смысле, круги закрашенные рисовать чуть быстрее.
Несмотря на то что эти круги якобы "ускорены", на процессоре, который у меня есть, с помощью REP STOSB выполняется тоже с такой же скоростью, 1 такт = 1 пиксель, так что прямо так сказать, существенного ускорения в рисовании закрашенных кругов тут нет, софтверный метод лишь на несколько десятков тактов медленнее. Преимущество рисования с помощью сопроцессора проявляется в том, что пока ему отдается задача на это действие, процессор может заниматься своими делами, получая параллельное выполнение вместо последовательного. Так что в этом тоже есть смысл.
Мне осталось по 2Д видеоускорителю сделать всего лишь 2 компонента:
  • Рисование текстурного прямоугольника
  • И закрашенного треугольника
Треугольник этот не 3Д, а просто рисуется как обычно, слева направо, сверху вниз построчно. Насчет 3Д ускорителя видака, я не уверен, что смогу сделать его пока что. Когда я закончу создание 2Д версии, то все-таки, приступлю к разработке игры про Лиса, о которой уже так давно мечтал и которую все никак сделать не могу.
1bhqoun-photo_2024-10-18_13-27-22.jpg
Теги: Видак

18 окт 2024 Пт Разработка VIDAC

Как ни удивительно, но вчера я довольно много сделал по этому проекту. Встроил модуль рядом с 8088 процессором и смог нарисовать линию, прямоугольник, окружность и даже полигональные линии. Это в общем и целом говорит о том, что примерно сделать у меня получается что-то, но остается еще много чего. Это и текстурированный треугольник, и просто треугольник, и прямоугольник с текстурой.
С трехмерным треугольником я так и не смог придумать что делать. Для качественного 3D требуется использование буфера глубины, а это сразу требует определенного места в памяти. Память у меня есть и это SDRAM. Ее можно использовать для этой задачи.
Но мне кажется, что с 3D будет сложно. Для начала надо бы вообще просто треугольник научиться рисовать, прежде чем получится его текстурировать. Все это невероятно сложная задача. Пожалуй я все-таки сделаю сначала 2D вариант, а пока говорить о 3D даже не стоит. Да и много ли у меня времени на все это...
t65uiz-photo_2024-10-19_09-35-48.jpg
Теги: Видак

17 окт 2024 Чт Встраивание VIDAC в верилятор

Наконец-то мне удалось совместить 8088 с видеоускорителем, и я смог нарисовать первую линию. Надо еще проверять и тестировать, но вроде получается и это хорошо. Используется разделяемая память, когда контроллер работает, выставлен статус BSY, то тогда невозможно ничего прочитать или записать в память $A0000...$CFFFF как минимум (192К). Это потому что видеоускоритель занимает адреса и использует их сам для записи.
Планируемый функционал.
  • Рисование линии. Выполнено, но не проверено до конца.
  • Прямоугольники — как закрашенные, так и не закрашенные (контурные)
  • Круг — не закрашенный и закрашенный
  • Текстурированный прямоугольник с прозрачностью (в том числе спрайты)
  • Закрашенный треугольник
  • Трехмерный текстурированный треугольник
  • Рисование тайловой сетки
Это большая работа и мне придется ее делать очень долго и много. Сегодня по крайней мере я смог сделать рисование линии, полигональных линии и закрашенного и не закрашенного прямоугольника и вроде все работает нормально.
1
2        include "app/macro.asm"
3        org     100h
4
5        screen  13
6        mov     ax, $C000
7        mov     es, ax
8        mov     si, draw
9        xor     di, di
10        mov     cx, size
11        rep     movsb
12        mov     dx, $300
13        out     dx, al
14        hlt
15
16draw:   vidacline   160,10,300,150,2
17        vidacpoly   100,100,3
18        vidacpoly   160,10,4
19        vidacrect   20,20,30,25,5
20        vidacfill   40,40,70,50,6
21        db 0
22size    = $ - draw
Рисуется треугольник и всякая дребеда.
Теги: 8088, Видак
<< Ранние записи | Поздние записи >>