Просмотр полной версии : Полосы на бордюре - принцип эмуляции
Уважаемые спектрумисты! Хочу приделать своему просмотрщику 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
Тут надо себе задавать вопрос: "почему у меня так получается?" :)
molodcov_alex
18.04.2009, 19:42
Когда идет пилот тон бордюр мигает красным и голубым, когда идут данные - синим и желтым.
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 - желтый. (на самом деле цвет просто инвертируется, никакой конкретной привязки нет) Получается, что бордюр в некотором роде повторяет сигнал идущий с магнитофона.
Намалевал простенькую прогу рисующую бордюр на весь экран, результат:
а тайминги учитываются у тебя?
пока на глаз
Добавлено через 58 секунд
скорость считывания с ленты 1500 бит на сек,
частота обновления экрана 50 гц?
Так?
molodcov_alex
18.04.2009, 21:26
частота обновления экрана 50 гц?
Это да.
скорость считывания с ленты 1500 бит на сек,
А вот тут не так. Единица в два раза длиннее нуля. Поэтому точную скорость нельзя назвать.
Там в файле, который я привел, нарисован сигнал магнитофона и длины в T-state'ах.
Этих T-state'ов в одной строке спектрума - 224, строк 312. И того за кадр - 69888 T-state'ов.
Вот эта картинка если что:
Блин. Как закручено. А один бит это сколько T-state'ов тогда?
Или я опять что-то напутал?
Сколько мне нужно считать байт с файла, что бы заполнить весь бордюр и вывести картинку?
molodcov_alex
18.04.2009, 21:52
Блин. Как закручено. А один бит это сколько T-state'ов тогда?
Смотри картинку ^^^. Ноль - 855*2, единица - 1710*2.
Виктор, ты бы ещё иходы приаттачил - возможно ктобы носом тебя и сунул где что не так....
о, исходы приатачу, если кому не лень разбираться в куче чужой бредятины
На делфи
А если я буду считывать данные с TAP-файла, как мне узнавать, когда эмулировать пилот-тон, или он по договоренности обозначается каким-то особым байтом (ну типа 10101010 или 01010101)?
Ведь ТАР, я так понимаю, "слепок" памяти из кассеты, а ведь пилот-тон не несет никакой информации, кроме синхронизации?
Sabrewulf
20.04.2009, 04:38
http://zxdocs.fatal.ru/formats/formats.php?file=TAP&type=html
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot