Вход

Просмотр полной версии : Полосы на бордюре - принцип эмуляции



Виктор
18.04.2009, 18:37
Уважаемые спектрумисты! Хочу приделать своему просмотрщику SCR-файлов эмуляцию загрузки картинки с полосками на бордюре. Подскажите, пожалуйста, как работает эта самая ПЗУ-шная процедура отрисовки бордюра.
Нарыл в книге "ZX Spectrum для пользователей и программистов" следующее:

"Порт 254 (#FE, %11111110)

ZX Spectrum управляет магнитофоном, клавиатурой, цветом бордюра и динамиком через один-единственный порт с адресом 254.

При записи байта в порт:
биты DO...D2 определяют цвет бордюра:

000 (0) — черный
100 (4) — зеленый
001 (1) —синий
101 (5) — голубой
010 (2) — красный
110 (6) — желтый
011 (3) — фиолетовый
111 (7) — белый;
"


Так и стал делать, но получается не так, как должно быть.
На самом деле при загрузке на бордюре (специально смотрел в эмуляторе) фигурируют 4 цвета:
желтый+синий или
голубой+красный
Других нет!!!
А то у меня получается уж слишком разноцветный бордюр

Sabrewulf
18.04.2009, 19:34
Тут надо себе задавать вопрос: "почему у меня так получается?" :)

Виктор
18.04.2009, 19:35
А вот так должно быть

molodcov_alex
18.04.2009, 19:42
Когда идет пилот тон бордюр мигает красным и голубым, когда идут данные - синим и желтым.

Виктор
18.04.2009, 20:18
Master molodcov_alex, а пилот-тон это тоже, что и leader tone?

"In order to ease the search for the block start, it is necessary to have on the beginning of each one a leader tone (808 Hz) that lasts for 3 or 5 seconds. It is followed by a short impulse (about 2500 Hz) called the synchro impulse, that specifies the start of the data block."



"когда идут данные - синим и желтым."
Типа 0-синий, 1 - желтый?

molodcov_alex
18.04.2009, 20:30
а пилот-тон это тоже, что и leader tone?
Да, оно же leader.

Типа 0-синий, 1 - желтый?
Это я просто про цвета. Вообще смена цвета происходит каждую смену магнитофонного сигнала (из 0 в 1 и наоборот), см. картинку как выглядит сигнал с пленки: http://zx.pk.ru/attachment.php?attachmentid=1294. Т.е. пока сигнал с мафона в 1, то цвет, например, синий. Если 0 - желтый. (на самом деле цвет просто инвертируется, никакой конкретной привязки нет) Получается, что бордюр в некотором роде повторяет сигнал идущий с магнитофона.

Намалевал простенькую прогу рисующую бордюр на весь экран, результат:

rasmer
18.04.2009, 21:00
а тайминги учитываются у тебя?

Виктор
18.04.2009, 21:19
пока на глаз

Добавлено через 58 секунд
скорость считывания с ленты 1500 бит на сек,
частота обновления экрана 50 гц?
Так?

molodcov_alex
18.04.2009, 21:26
частота обновления экрана 50 гц?
Это да.

скорость считывания с ленты 1500 бит на сек,
А вот тут не так. Единица в два раза длиннее нуля. Поэтому точную скорость нельзя назвать.
Там в файле, который я привел, нарисован сигнал магнитофона и длины в T-state'ах.
Этих T-state'ов в одной строке спектрума - 224, строк 312. И того за кадр - 69888 T-state'ов.

Вот эта картинка если что:

Виктор
18.04.2009, 21:45
Блин. Как закручено. А один бит это сколько T-state'ов тогда?
Или я опять что-то напутал?
Сколько мне нужно считать байт с файла, что бы заполнить весь бордюр и вывести картинку?

molodcov_alex
18.04.2009, 21:52
Блин. Как закручено. А один бит это сколько T-state'ов тогда?
Смотри картинку ^^^. Ноль - 855*2, единица - 1710*2.

rasmer
18.04.2009, 21:56
Виктор, ты бы ещё иходы приаттачил - возможно ктобы носом тебя и сунул где что не так....

Виктор
18.04.2009, 22:08
о, исходы приатачу, если кому не лень разбираться в куче чужой бредятины
На делфи

Виктор
20.04.2009, 01:32
А если я буду считывать данные с TAP-файла, как мне узнавать, когда эмулировать пилот-тон, или он по договоренности обозначается каким-то особым байтом (ну типа 10101010 или 01010101)?
Ведь ТАР, я так понимаю, "слепок" памяти из кассеты, а ведь пилот-тон не несет никакой информации, кроме синхронизации?

Sabrewulf
20.04.2009, 04:38
http://zxdocs.fatal.ru/formats/formats.php?file=TAP&type=html