(для тех кто в танке =)
Все прошло не без накладок, но — была показана демка для Вектора на большом экране в формате конкурса. Гы.Цитата:
Сообщение от 29.08.2009 21:28 - chaos_construct (Chaos Constructions)
Вид для печати
(для тех кто в танке =)
Все прошло не без накладок, но — была показана демка для Вектора на большом экране в формате конкурса. Гы.Цитата:
Сообщение от 29.08.2009 21:28 - chaos_construct (Chaos Constructions)
Ага, вот только придумаю, как видео со вги зацифровать.
В общем вот. Быстродема 8 Bit Snail (2009) by svo, 4-е место в ZX/Oldskool Demo на Chaos Constructions 2009.
http://sensi.org/~svo/scalar/ware/767/
http://pouet.net/prod.php?which=53805
http://www.youtube.com/watch?v=7Z0dsZUAyd0
http://ftp.cc.org.ru/2009/cc2009results.txt -- не уверен, что значит "55" в числе голосов, потому что сам до голосования не добрался. Но то, что это меньше чем в два раза меньше, чем первое место, греет душу. Особенно при том, что улитку на экране вообще видно не было.
Отдельное спасибо Prog Master-у за музыку, которую я взял без спроса и SES-у за плеер этой музыки, которого я тоже не спрашивал ;) Вроде бы я ничьих заветов при этом не нарушил. Ивагору тонны респекта за десодо\h\h\h\hэкзомайзер и Tim0xe за общую мотивацию. Извините, что преведов в самой демке нет, я ступил, а потом поздно было.
Демка работает на Векторе-06цц в FPGA, на котором я ее и показывал. На реале проверить не получилось по известным причинам. Эту версию может быть будет сложно запустить на выживших Векторах, потому что ей нужен кваз. Когда появится что-нибудь живое, можно будет сделать сборку для бесквазья.
Эмуляторы, к сожалению, не очень хорошо справляются с растровыми эффектами, на которых построена эта дема. VV вообще ничего не показывает в экранной зоне, а b2m показывает в общем прилично, но разводит недопустимую асинхронщину из-за чего все мельтешит ;) Поэтому лучше смотрите ютубу.
Ыгыгыгы!
svofski, классная дема! Спасибо, порадовал :)
Если CPLD и SIMM, то прикольно было бы заодно еще в той же плате оформить и видео "кондиционер", чтобы не надо было в плату залезать и заодно уж АЫ, раз все равно АЫ нужна. Эдакая док станция для Вектора. Для последних двух оставшихся.
Человека Из Вологды я как раз посчитал. Его и твой, вот и два.
У меня не хватает лицензии моего Игла, чтобы развести такую длииииннную плату =)
Да тут вообще звезды в твою сторону поворачиваются. И пикад у тебя и Вектор у тебя и опыт работы с SIMM-ами у тебя. Заметь, что в этой штуке можно заодно и контроллер флопа развести и эмулятор прямо в него воткнуть. Не понимаю, как ты можешь сопротивляться такому соблазну!
У меня овладевание фпга как-то скрипуче движется :(
Мелькает не из-за "асинхронщины", а потому что правый край растрового эффекта в эмуляторе не попадает между букв, как у тебя. Это ещё вопрос, будет ли он попадать на реальном Векторе. Вопрос о количестве тактов от момента прерывания до появления "луча" на экране (или наоборот) пока открыт.
Это да, вопрос безусловно открыт.. Мы все ждем с замиранием когда Tim0xA прогреет паяльник =)
Количество тактов тут мало чего меняет, в таких пределах это скорее фаза.
Эх, если б растровое прерывание было на произвольную строку, да еще бы процессор был с инструкциями покороче, такого можно было бы навернуть...
Между прочим, если внимательно посмотреть правую границу растрового эффекта, то у тебя она не вылазит за пределы второй буквы (там где они пересекаются), а у меня справа от буквы есть один пиксель эффекта. Однако у меня цвет задаётся для группы из 8 точек, т.е. ширина эффекта у тебя на один пиксель меньше, чем число кратное восьми. Почему?
И это при том, что за один такт выдаются 2 точки (соответственно, за минимальный цикл процессора из 4-х тактов - 8 точек).
Я сам этим вопросом интересуюсь.
Поскольку video_palette_wren (ну и value) -- это регистры, запись в них происходит по clk24. В ОЗУ палитры запись произойдет на один клок позже.Код:always @(posedge clk24) begin
if (iports_write & ~WR_n & cpu_ce) begin
video_palette_value <= DO;
video_palette_wren <= 1'b1;
end
else
video_palette_wren <= 1'b0;
end
Тут интересней paletteram_adr, который в основном равен coloridx и именно от момента перещелкивания coloridx зависит то, куда ж мы запишем реальную цифирь. Тактом раньше -- записали в цвет предыдущего пикселя, тактом позже -- в цвет следующего. Это при том, что отображаться может один и тот же в этот момент.Код:wire [3:0] paletteram_adr = (retrace/*|video_palette_wren*/) ? video_border_index : coloridx;
palette_ram paletteram(paletteram_adr, video_palette_value, clk24, clk24, video_palette_wren, realcolor2buf);
Для храбрых, coloridx берется из модуля video.v и обновляется примерно вот так:
На спаде клока, что занятно. Сейчас трудно сообразить, но скорее всего это означает, что индекс цвета, то есть адрес палитры, обновляется раньше, чем формируется сигнал записи в ОЗУ палитры.Код:reg [3:0] xcoloridx;
wire [3:0] coloridx_modeless;
always @(negedge clk24) begin
if (mode512) begin
if (ce6)
xcoloridx <= {2'b00, coloridx_modeless[2], coloridx_modeless[3]};
else
xcoloridx <= {2'b00, coloridx_modeless[1], coloridx_modeless[0]};
end
else
xcoloridx <= coloridx_modeless;
end
// coloridx is an output port, address of colour in the palette ram
assign coloridx = border ? border_idx : xcoloridx;
Из всего этого я пока делаю вывод, что ширина отрезка от инструкции out $0c до out $0c короче быть вряд ли способна. А вот то, что она все out-ы сдвинуты по фазе "влево" -- это похоже на правду.
К анализу кода приглашаются все желающие, на то он и открытый =)
На сколько хватит твоего терпения, я успею поужинать? =)
Да, я пока проверю, как работает команда INR с флагом AC...
Ну вот, вроде так. Очень o_o страшно, ведь наверняка не заработает как хотелось бы.
Растровый эффект смещен
http://pic.ipicture.ru/uploads/09092...jWKCdfB4vc.jpg
Интересно, где-то на 6-8 точек что ли.. Надо будет какой-то тест написать. Зато как я смачно отсортировал цвета по светимости :D
Эх.. вот ведь незадача. Смещено на предположительно 8 пикселей влево и момент записи в ОЗУ палитры отличается. Еще я чего-то не понял где надпись в начале.
Ага. И улитка в сеточку. Значит наверное у тебя Вектор из тех, в которых out $0c нужно повторять по десять раз. Чорт, Black Ice не проверить. В нем тоже по одному разу out $0c.
---------- Post added at 00:18 ---------- Previous post was at 00:17 ----------
Я когда-то ковырялся и находил где-то про этот out $0c. А сейчас снова забыл уже, в чем там дело. Вроде бы там дело было в гонках и делался для этого какой-то очень простой фикс.
Сделал доработку для D32,D39 http://zx.pk.ru/showpost.php?p=156712&postcount=10
Появилась надпись в начале и улитка теперь без сетки.
---------- Post added at 00:58 ---------- Previous post was at 00:50 ----------
Вот только изображение теперь стало подергиваться, как будто срывается КСИ.
---------- Post added at 01:29 ---------- Previous post was at 00:58 ----------
Рекомендуется также доработать D83/5
Вообще-то D83/5 - это выход, возможно в тексте опечатка или у владимирцев была другая схема.Цитата:
"5.Выводы D32/2, D39/2, D83/5 соединить с общей шиной. Это позволит правильно запрограммировать палитру при одноразовом выполнении команды OUT OCh."
Быстро ты =)
А я сижу, думаю как мне такты разрулить, чтобы было похоже на настоящий вектор. Пока не получается.
В VU 28-29 (стр. 6) приведена альтернативная доработка схемы программирования цветов от Шашкова.
---------- Post added at 10:50 ---------- Previous post was at 10:12 ----------
Загадка:
Знаете ли вы, в каком эмуляторе хорошо (лучше чем в b2m, и тем более VV) работают snail, clrspace и lscroll? :)
Это не значит, что этот эмулятор правильный, но, по крайней мере, он ближе к текущей реализации на DE1.
---------- Post added at 11:19 ---------- Previous post was at 10:50 ----------
У таких векторов (мой тоже такой) можно и одним outом "попасть" в палитру, но нужно делать это в подходящий момент. Почему-то никто в прошлом не озадачился вопросом разработки соответствующей процедурки.
В "Секретах вектора и кристы" написано, что для записи в ОЗУ палитры доступны (вверху бордюра) 2/3 длительности строки. В форуме b2m после анализа схемы писал, что (если не ошибаюсь) запрет на запись длится 1/4 длительности строки.
Короче, если записывать в палитру на верхнем бордюре дольше 64 тактов - будет ОК, хотя это годится только для "обычного" применения.
Так не интересно :)
Две подсказки, после которых невозможно ошибиться:
1. Доступны исходники (ассемблер).
2. В XP не работает звук.
Таких эмуляторов, как я помню, штук 10 разных и все в разной степени неработоспособности. В ve27a относительно убедительно выглядели растровые эффекты, но сказать, что в нем на xp не работает только звук —*это ничего не сказать.
Проблема пофиксить в том, что распределение тактов процессора и видеосистемы должно совпасть строго определенным образом. Я вчера устроил несколько довольно радикальных экспериментов и в некоторых случаях добился похожести, но не 100% соответствия. Я использую статическую картинку clrspace.com в качестве эталона.
какой ты злой, однако :).
Обрати внимание - слова только в моем посте нет (к слову, интересно, почему даже в DOSbox звук не работает, вернее работает только вариант со спикером). А по растровым эффектам чем он хуже b2m? И какие у тебя к нему серьезные претензии кроме звука (у меня буквально пара)?
Отправил
ivagor, а чего ты так обостренно относишься к моему отношению к ve27a? Я ничего плохого про него не сказал. Просто под XP он не работает принципиально и почти так же принципиально, у меня по крайней мере, он не работает и под dosbox-ом -- все очень медленно, раз в 100, даже если запрещено абсолютно все, включая ви53. А так ничего, отличный наверное эмулятор. Я им много пользовался на ранних стадиях разработки, потому что в нем хороший дебуггер. Чего и b2m и VV желаю =)
? А у меня почти нормальная скорость, всего процентов на 20 медленнее, чем b2m и VV (под XP, а под DOSbox очень медленно, это да). Там куча настроек, раньше у меня тоже было медленно, потом что-то подкрутил - стало нормально.
Ну как же, это был первый нормальный эмулятор вектора! И лучший для ДОС до сих пор.
А первый очень хороший и удобный кросс-отладчик, кое в чем опережающий ve27 и другие - tdv. Ну это я так, ностальгия, понимаешь.