по организации текстмода — очень удобно для вывода символов одном цветом, например (да и с раскраской проблем нет, можно сделать set 7, h: ld [hl], : res 7, h), но честно скажу, пцшный вариант с чередованием символов\атрибутов удобнее и иногда быстрее (медленнее для монохромных строк из-за лишнего inc l, но можно сразу раскрашивать строку по ходу, да и очистку можно сделать одним вызовом DMA)
вкратце — текстовый режим использует две страницы памяти. В первой (указанной в реге VPage) лежат 64 строки текстового экрана по 256 байт — последовательно 128 байт символов и 128 байт атрибутов к ним в строке. Адрес выглядит примерно так:
%ppYYYYYY AXXXXXXX
pp — адрес окна, куда замаплена процессору страница (в данном случае пофиг), X — номер столбца, Y — номер строки, A = 0 — код символа, если 1, то его атрибут.
Атрибуты от пцшного текстмода не отличаются, разве что нет мерцания, поэтому биты 0..3 — цвет символа, 4..7 — цвет фона (старшие 4 бита индекса палитры в PalSel, здесь еще одна фишка — поскольку в буфере строк у VGA-скандаблера внутри FPGA нет памяти для хранения полного 8-битного индекса палитры, то все слои TSU используют ту же палитру, что и слой текстмода)
в странице VPage XOR 1 (!) лежит обычный шрифт 8x8 пикселов 256 цветов, символ за символом, как на пц :)
вот кстати да, я тоже не мог понять, почему все фальшивило, пока не понял, что проц и AY несинхронны, а вся логика конфы вместе с зетником работает на 50гц кадровой :)
ох, а впиливание диги в вортекс — отдельная история: среди каши бульбокода воткнуть нужную фичу, не сломав остальное (что мы таки несколько раз и натворили, оставляя ковальского без рабочего psg-экспорта и вообще :)
хех, не всегда это походит — например, по своему опыту считать фреймы удобнее в десятичной системе, операции над семплами\орнаментами — в двоичной; у кого-то все обстоит по-другому.
так что если делать выбор hex\dec, то отдельно для фреймомерки и отдельно для непосредственно редактора трека :)
Нет слов, объем работ поражает, на самом деле — хоть изменения по большей части и направлены на улучшение юзабилити и исправление ошибок, все равно не скажешь, что все проделано зря, я вот даже наконец-то ушел с оригинальной бульбоверсии на свежий вортекс :) Flexx , огромное спасибо тебе за новую версию!
p.s. а там, глядишь, и принципиально новый трекор появится ;)
(сорян за минус, промахнулся)
по организации текстмода — очень удобно для вывода символов одном цветом, например (да и с раскраской проблем нет, можно сделать set 7, h: ld [hl], : res 7, h), но честно скажу, пцшный вариант с чередованием символов\атрибутов удобнее и иногда быстрее (медленнее для монохромных строк из-за лишнего inc l, но можно сразу раскрашивать строку по ходу, да и очистку можно сделать одним вызовом DMA)
pp — адрес окна, куда замаплена процессору страница (в данном случае пофиг), X — номер столбца, Y — номер строки, A = 0 — код символа, если 1, то его атрибут.
Атрибуты от пцшного текстмода не отличаются, разве что нет мерцания, поэтому биты 0..3 — цвет символа, 4..7 — цвет фона (старшие 4 бита индекса палитры в PalSel, здесь еще одна фишка — поскольку в буфере строк у VGA-скандаблера внутри FPGA нет памяти для хранения полного 8-битного индекса палитры, то все слои TSU используют ту же палитру, что и слой текстмода)
в странице VPage XOR 1 (!) лежит обычный шрифт 8x8 пикселов 256 цветов, символ за символом, как на пц :)
окей, вброшу своё:
впрочем, VT3.0 будет, так что stay tuned! :)
p.s. звуковые эффекты, конечно, несколько криповые, но пофиг, ибо в остальном всё аутэнтично %)
так что если делать выбор hex\dec, то отдельно для фреймомерки и отдельно для непосредственно редактора трека :)
Flexx , огромное спасибо тебе за новую версию!
p.s. а там, глядишь, и принципиально новый трекор появится ;)