PDA

Просмотр полной версии : Screen timings



Higgins
04.05.2008, 00:53
Не нашео поблизости подходящую тему, поэтому создал новую.

Вот здесь

http://www.worldofspectrum.org/faq/reference/48kreference.htm

описаны тайминги генерации изображения в 48K. Много раз перечитывал эти абзацы, но так и не понял следующего:

1) Если мы имеем 64 строки верхнего бордюра (включая скрытые, ушедшие на вертикальный возврат луча), то каким образом первый байт области изображения (16384) может выводиться после (64 * 244) тактов? Есть ведь еще левый бордюр, который должен быть отрисован.

Вопрос такой: это первый байт изображения рисуется позже или прерывание случается уже после того, как часть первой линии экрана отрисована?

2) Откуда взяли 69888 тактов на фрейм, если вывод идет на телевизор с разверткой ровно в 50Hz, и который знать ничего не знает ни о каких спектрумах? О каких 50.08Hz прерываний может идти речь, если их два на кадр (один на полукадр), а частота развертки такая, как есть в телевизоре.

До сих пор я себе это представлял так: действительно, 69888 тактов на 312 строк (включая скрытые) плюс половина строки в каждом полукадре: 69888 + 224 / 2 = 70000, т.е. ровно 50Hz телевизора и прерываний и 3.5MHz процессора.

Если же считать так, как написано на страничке поссылке, то не только получается частота полукадров и прерываний мистическая, но количество строк в телевизоре 312 * 2 = 624. А где, простите, еще одна?

Или у них такие телевизоры?..

ZEK
04.05.2008, 01:02
Нет еще одной, спектрум выводит картинку не соответсвующую стандарту

Black_Cat
04.05.2008, 08:26
каким образом первый байт области изображения (16384) может выводиться после (64 * 244) тактов? Есть ведь еще левый бордюрчитай схемы а не инструкции

Higgins
04.05.2008, 10:14
Black_Cat,
Вы можете дать ссылку на схемы фирменного Спектрума?

Black_Cat
04.05.2008, 10:41
схема фирменного Спектрума в том что ты спрашиваешь ни к чему, смотри схему KAY-1024SL, либо на крайняк схему Scorpion'a и ты получишь ответы на свои вопросы

Higgins
04.05.2008, 13:53
Black_Cat,
Мне именно что ни к чему Кай и прочие поделки. Мне нужно знать, как формируется сигнал в фирменной машине. Причем именно 48K.

К слову. Может быть, есть демка для 48K, которая может помочь понять, где начинается поле экрана и каков на самом деле размер кадра в тактах?

Black_Cat
04.05.2008, 14:09
ясно, ты не въезжаешь в то, о чём тебе говорят.. ну чтож ULA тебе в руки!

Vladimir Kladov
04.05.2008, 22:26
БК, человек хочет понять УЛА. Нет на Кае улы, и на Скорпионе её нет, что он там из схемы вычитает? (А я вообще схемы читать не умею, и тольку от них, когда речь идёт о чём-то забитом в ПЛМ=чёрный ящик).

2Хиггинс: просто поверьте, что то, что написано, реально работает. Но добиться такой точности очень трудно. Для начала: если есть хотя бы одна ошибка в реализации ядра или такт хотя бы одной команды съехал, работать не будет всё равно, по крайней мере на каком-нибудь множестве демок или игрулек. Можете посмотреть мои исходники, или Фузе (я, кстати, Фузе не смотрел, лениво в сяшном коде ковыряться). Всё сделано точно по инструкции, и работает. В EmuZWin я делал кучу параметров для подстройки. Как показал время, это чушь: если какая кривизна и была, то только из-за каких-нибудь мелких неточностей в той или иной командочке. Так что в EmuZGL я просто забил все настройки в программу.

Black_Cat
04.05.2008, 23:02
человек хочет понять УЛА. Нет на Кае улы, и на Скорпионе её нетесть в любом клоне - аппаратный эмулятор ULA на рассыпухе, но в KAY'e он наиболее хорош для изучения, а человек судя по вопросам 1 и 2 не понимает логику работы ULA, что лучше всего изучать именно по схемам, которые дают понимание на уровне физики, а не по программистским шпаргалкам, из которых физика не прослеживается, а всё даётся на уровне заучивания заклинаний из которых совершенно не ясно почему это именно так а не иначе. Как наглядный пример результатов изучения программистских заклинаний - вопросы в голове топика, когда чел после изучения мануалов а-ля "сделай N шагов на запад, потом М шагов на север, потом Z шагов на восток и опять Х шагов на север" так и не понял а зачем это нужно и что собсно он при этом получит..

bigral
05.05.2008, 01:14
"сделай N шагов на запад, потом М шагов на север, потом Z шагов на восток и опять Х шагов на север" так и не понял а зачем это нужно и что собсно он при этом получит..

Подожди может я и не смотрел схемы KAY-a но думаю они мало чем отличаются от того же Ленинграда-2 с которого содраны большинство клонов. Что становится сразу понятно в первые же минуты просмотра таких схем - делалась схема эта лишь бы "по меньше" корпусов. А схема типа Львов или тот же Harlequin уже на стоко сложная что понять и просчитать на каком такте CPU будет рисоваться тот или иной ряд пикселей без спец-проги моделирующей это практически НЕ РЕАЛЬНО. ок... может и реально но я не научился. При этом я не верю что какой-то из наших клонов на 99% ULA совместим по timing-ам и тот же harlequin и fuse и spectaculator тоже думаю хоть и 98% близки но не 99% и тем более не 100%. В самой инфе есть баги думаю, раз там написанно что на некоторых экземплярах на 1 такт позже происходит вывод изображения.

Если не затруднит очень напиши pls своими словами коротко как просчитать на каком такте будет рисоватся тот или иной пиксель на экране...

Higgins
05.05.2008, 01:15
Vladimir Kladov,
Любопытно: когда я прошу эмулятор дать на полукадр ровно 70000 тактов, то линии в начале загрузки с ленты (я имею в виду стандартный leader) стоят на месте. Задержки у меня не реализованы, но ведь их и не должно быть для процедуры загрузки в ROM. Вот интересно, это просто совпадение, или что-нибудь за этим стоит? ;-)

Black_Cat
05.05.2008, 09:09
не смотрел схемы KAY-a но думаю они мало чем отличаются от того же Ленинграда-2без разницы какие схемы, лишь бы это был клон Спектрума (таких большинство), а не спектрум-совместимое нечто, по типу АТМ-2, из схемотехники которого получить представление о Спектруме практически невозможно
я не верю что какой-то из наших клонов на 99%верой занимается религия, а тайминги давно все изучены и задокументированы

напиши pls своими словами коротко как просчитать на каком такте будет рисоватся тот или иной пиксель на экране...считай сам, начало каждого кадра - это левый верхний пиксель экрана

Sayman
05.05.2008, 12:04
а че такое юла?? :D

ZEK
05.05.2008, 17:51
БМК

Vladimir Kladov
05.05.2008, 18:03
Задержки у меня не реализованы, но ведь их и не должно быть для процедуры загрузки в ROM.ROM - это ПЗУ, туда нельзя записать. Имеется в виду RAM или загрузчик из ROM? При загрузке их можно и не учитывать, но они есть на любой команде, которая обращается к памяти, подлежащей контенции. В 48к - это только 4000h-7FFFh, но и того достаточно. В 128 банки для задержки разные от номера модели, но банки 5 и 7 там есть всегда. В документации на ВОС написано всё, если раз на 5 прочитать внимательно, то врубиться можно. Исходники опять же поглядеть, там всё напимано.

70000 тактов на полкадра, если я понял, многовато будет. Там меньша на весь кадр должно быть.

ZEK
05.05.2008, 18:47
70000 тактов на полкадра
Полукадр это фрейм, в телевидении частота кадров 25Гц, частота полей(фреймов)50Гц, но так как у спека колво строк четное то полукадры отсуствуют как клас

Higgins
05.05.2008, 19:14
Имеется в виду RAM или загрузчик из ROM?
Я имел в виду команду LOAD "".


они есть на любой команде, которая обращается к памяти, подлежащей контенции. В 48к - это только 4000h-7FFFh, но и того достаточно.
То есть в области ROM модели 48 задержек нет. Я именно об этом говорил.


Исходники опять же поглядеть, там всё напимано.
Это понятно. Но переписывать из исходников в исходники -- боюсь, это мне не подойдет. Во-первых, слишком много ошибок я вижу в подобного рода софте. Во-вторых, сама тема очень скользкая -- много моделей и режимов, которые следовало бы учитывать, и о которых толком не узнать из имеющихся исходников. Кто знает, что именно автор взялся эмулировать и насколько точно.

Теперь по поводу времянок.


70000 тактов на полкадра, если я понял, многовато будет. Там меньша на весь кадр должно быть.

Вот эта фраза меня смущает. Я очень боюсь ошибиться, но Вы точно знаете как работает черезстрочная развертка? Например, почему строк в телевизоре нечетное количество?

Это важно, когда мы обсуждаем размер полукадра в тактах. Ну вот, скажем, Вы пишете, мол, сделайте как сказано по приведенной в начале темы ссылке, и бордюрные эффекты будут работать (если не вру). Но подождите, ведь для бордюрных эффектов достаточно знать остояние первой видимой (или нужной) линии экрана от начала прерывания и длину видимой строки (в тактах). К чему бы здесь нужен был размер кадра?

Другими словами, если времянки прямого горизонтального хода соблюдены, то здесь трудно ошибиться, ведь бюрдюрные эффекты всегда синхронизируются прерываниями. В отличие от процедуры загрузки, например. И не важно, 69888 там тактов или ровно 70000.

И еще один момент для размышления. Если в фирменной модели такты идут и на процессор, и на память, и на ULA и все остальное от общего осциллятора, и процессор работает ровно на 3.5MHz, то как вы себе представляете делитель на 69888 (или кратное этому количество) тактов, чтобы получить те самые 50.08Hz. А самое главное, куда девается половина хода луча в 625-й строке? Ее же нужно отрисовать. И даже если луч погасить, то ему все равно нужно время чтобы дойти до конца строки. В этих 69888 тактах этого времени просто нет.

Есть версия, что в FAQ сделано некоторое упрощение. В физику предмета то, что там описано не укладывается.

ZEK
05.05.2008, 19:31
Ее же нужно отрисовать. И даже если луч погасить, то ему все равно нужно время чтобы дойти до конца строки.
Не нада её отрисовывать. Луч дальше левого верхнего угла не уйдет

Добавлено через 3 минуты

как вы себе представляете делитель на 69888 (или кратное этому количество) тактов, чтобы получить те самые 50.08Hz
14000000/224/312/4 = 50,08 :)

Black_Cat
05.05.2008, 20:14
Есть версия, что в FAQ сделано некоторое упрощение. В физику предмета то, что там описано не укладывается.:v2_lol: :v2_lol: :v2_lol: 5 баллов!! :v2_thumb:
"- Это все потому, что у кого-то очень узкие двери!
- Нет, этто прос-то кто-то слиш-ком много е-ст!"
(с) Винни-Пух в гостях у Кролика

to heroy: помоему бесполезно.. ;)

bigral
05.05.2008, 20:56
14000000/224/312/4 = 50,08 :)

244? /4?

14(Mhz) /448(ticks per line) /312 (lines per frame)/ 2(frames per picture) = 50.08012820 (pictures per second)

Vladimir Kladov
05.05.2008, 21:08
То есть в области ROM модели 48 задержек нет. Я именно об этом говорил.А вы грузите именно внутрь ROM? (Я схожу с ума... -Фрекен Бок).


Вы точно знаете как работает черезстрочная развертка? Например, почему строк в телевизоре нечетное количество?
Вот этого я не знаю и знать мне вообще не надо сколько строк в телевизоре, даже если бы я и понял, что там как устроено, на процесс программирования это не влияет. Важно, сколько строк на экране спектрума, а телевизор эмулирует пусть эмулятор телевизора.

куда девается половина хода луча в 625-й строке
Вот из-за этой самой половины и невозможно на реальном спеке организовать нормальный интерлейс.

Какая вам разница, какая там физика у процесса? Просто доверьтесь профи, которые уже всё для нас посчитали.

Vladson
05.05.2008, 21:34
Важно, сколько строк на экране спектрума, а телевизор эмулирует пусть эмулятор телевизора.
Не вполне согласен, может быть вам не важно, а ТС хочет эмулировать всё на столько точно чтоб ВААПЧЕ и комар носа не подточил. (т.е эмулировать всё вплоть до телевизора, и схемы его развёртки) всякое может быть... (ну педант человек, что это плохо что-ли ?)

ZEK
05.05.2008, 21:43
244? /4?
14 Частота генератора
делиться на 4 получается частота проца
а в строке 224 такта проца

Добавлено через 3 минуты

14(Mhz) /448(ticks per line) /312 (lines per frame)/ 2(frames per picture) = 50.08012820 (pictures per second)
БРЕД!!!

Black_Cat
05.05.2008, 21:47
а ТС хочет эмулировать всё на столько точно чтоб ВААПЧЕ и комар носа не подточил. (т.е эмулировать всё..ну тоды следует добавить эмуляцию положения планет и ближайших галактик :v2_laugh:

ZEK
05.05.2008, 21:49
..ну тоды следует добавить эмуляцию положения планет и ближайших галактик
Не, лучше несведение

Lethargeek
05.05.2008, 22:07
Не, лучше несведение
Помниццо итальянцы в RealX обещали блики на стекле кинескопа проэмулировать... :p

ZEK
05.05.2008, 22:11
Помниццо итальянцы в RealX обещали блики на стекле кинескопа проэмулировать...
Думую эмулить несведение на кинескопе с дельтовидной электронной пушкой это даст больше реальности, и реализация сложнее :) а если еще разогрев ламп в лапмовике это будет песня

Lethargeek
05.05.2008, 22:13
Утрем нос зарвавшимся буржуям!!

Vladson
05.05.2008, 22:19
Лучше отключение звука или вертикальной развёртки, и нормализацию только после удара по монитору кулаком :D

(кто сидел на спеках на старых советских телеках поймёт)

Lethargeek
05.05.2008, 22:47
Во блин, вспомнил зачотный глюк: у меня на телеке в зависимости от цвета бордюра весьма заметно видоизменялась палитра!! RGB-вход, если че.

Black_Cat
05.05.2008, 22:55
не, эт не от телека, эт у тя привязки чёрного небыло :)
..но её тож можно сэмулить, тем более что до этого ещё никто не додумался - эмулить аппаратные недоделки клонов :)

Vladson
05.05.2008, 22:58
никто не додумался - эмулить аппаратные недоделки клонов
Срочно патентуем идею, лимоны баксов сделаем :)

ZEK
05.05.2008, 23:04
Точно, добавить кривости уровноя черного!!

А у меня в телеке который был отведен для спека был хреновый высковольтный кабель, и в сырую погоду приходилось задние платы разварачивать и подбирать правильное расположение кабеля что бы не стрелял

У кого круче??

Vladson
05.05.2008, 23:20
в сырую погоду приходилось задние платы разварачивать

У кого круче??
Мне приходилось отходить от мафона на весь процесс загрузки в любое время (точнее в любую погоду) так-как шнур питания мафона висел на соплях. :)

ZXMAK
06.05.2008, 00:03
244? /4?

14(Mhz) /448(ticks per line) /312 (lines per frame)/ 2(frames per picture) = 50.08012820 (pictures per second)

:v2_clap2:

2(frames per picture) :v2_laugh:

черезстрочная развертка в спектруме не используется :v2_wink2:

телевизору по барабану соответствует сигнал в точности стандарту или нет. Телевизор даже не знает о том что в видеосигнале может быть черезстрочная развертка. Черезстрочная развертка получается за счет того что на одном месте по очереди отображаются разные четные и нечетные строки. Другими словами в видеосигнале идут по очереди кадры с четными и с нечетными строками. Для телевизора-же это выглядит просто как последовательность кадров которую нужно отобразить по очереди.
Для телевизора главное чтобы разброс частот не был слишком велик, тогда он подстроится так чтобы за время между строчными импульсами луч проходил по всей ширине кинескопа. тоже и вертикальной разверткой, ему не важно сколько точно строк содержится в сигнале, главное чтобы отклонение было не слишком большим, иначе он не сможет подстроится и будет наблюдатся срыв вертикальной синхронизации (мельтешение).

поэтому изображение спектрум выводит построчно, за секудну 50 импульсов вертикальной синхронизации и N импулсов строчной синхронизации. Где N число равное числу строк, обычно порядка 300... :v2_wink2:

Никакой черезстрочной развертки в спектруме нет.

bigral
06.05.2008, 02:24
2(frames per picture) :v2_laugh:

Это был типа вопрос :) к автору откуда он взял 14 и 4 и 224.

Потому как на самом деле ж pix clock 7 Mhz а не 14 (задающий кварц к экрану никакого отношения не имеет). А в строке 448 pix и в полукадре 312 строк 7000000/448/312 = 50.080128.... почти 50 кадров в секунду. Ну и на последок - 7000000/448 = 15625 Hz (частота строчных синхро импульсов в телике)

Lethargeek
06.05.2008, 02:43
не, эт не от телека, эт у тя привязки чёрного небыло
А точно оно? Помню на телевизоре - усиливались компоненты, инверсные к цвету бордюра (то есть например если бордюр G+B=CYAN, то палитра красноватая становилась). А вот когда одно время к МЦ подрубали - ничего подобного не наблюдалось!


Мне приходилось отходить от мафона на весь процесс загрузки в любое время (точнее в любую погоду) так-как шнур питания мафона висел на соплях.
Ыыы, я мафон перед загрузкой в морозилке держал. :)


У кого круче??
Кстати еще глюк вспомнил. Короче, мой первый Спек - Ленинград-1 слегка исправленный (пофикшено мигание бордюра от звука в некоторых игрушках, порт кемстона). Звук через телевизор, и обычно довольно громкий (почти всегда регулятор на минимуме стоял). Ни тырдоса, ни аигрика не было, но некоторые игрушки (видимо из-за ПЗУ Турбо-90) определяли его как 128 и пытались юзать AY. В таких случаях наблюдались низкочастотные "пуки" на пределе слышимости (не случайные, а именно там, где звук должен быть), а бордюр таки иногда мигал или (чаще) на нем проскакивали тонкие полоски. Но это еще что...

Году в 93-м попалась мне игрушка Rick Dangerous-2. Там звук (эффекты) ваще был ни на что не похожий - ОЧЕНЬ тихий (ползунок где-то наполовину пришлось сдвигать), но весьма интересный и качественный, причем без тормозов!

А щас запускаю все найденные версии RD2 в эмуле, и нифига: или AY-звук (под 128), или незамысловатый биперный. Сижу вот и думаю: "шо это было?" Мож кто знает такую версию - или все-таки железные глюки?

ZEK
06.05.2008, 08:56
Это был типа вопрос к автору откуда он взял 14 и 4 и 224.
Берем среднестатичекий клон (224 такта процессора на строку)
224*312 = 69888 тактов процессора на фрейм, о который в треде упомининаю и конкретно спрашивали

14мгц частота генератора делится на 4 что бы получить чатоту проца 3,5Мгц

итого 14мгц/4 = 3,5Мгц/69888(которые 312*224) = 50,08

Причем тут картинка в пикселях о которых речи не было непонятно

Особенно причем тут деление пополам типа кадров в картинке? Это как спектрум герерит 100Гц частоту полей, и из неё интерлейсом формуруются 50Гц частота кадров??

В общем абы ляпнуть...

И ваще у оригинала кварц не 14МГц

Black_Cat
06.05.2008, 09:33
И ваще у оригинала кварц не 14МГц
14 - если речь о 48 модели

Добавлено через 36 секунд

А точно оно?
точно

Добавлено через 2 минуты

В таких случаях наблюдались низкочастотные "пуки
эт всёж наверно от кривизны дешифрации #FE

Добавлено через 4 минуты

в полукадре 312 строк
для мониторной развёртки не существует понятия полукадр - это всё абсолютно идентичные кадры с кадровой частотой 50 Гц

Добавлено через 8 минут

Черезстрочная развертка получается за счет того что на одном месте по очереди отображаются разные четные и нечетные строки.
Нет, черезстрочная развертка получается за счет того, что в полукадре нецелое количество строк

Где N число равное числу строк, обычно порядка 300...вообще-то в стандартном Спектруме оно обычно 312, ав Пентагоне - 320

Higgins
06.05.2008, 10:57
А вы грузите именно внутрь ROM?

Я ведь говорил о стандартном leader'е. Это его полосы стоят на месте при 70000 тактах на фрейм.

daniel
06.05.2008, 12:16
заэмульте пожалуйста tape loading error при включении компрессора холодильника... :)

ZXMAK
06.05.2008, 22:56
для этого нужен usb адаптер для подключения холодильника к компу :)

Higgins
06.05.2008, 23:53
Есть две странички:

1) http://www.ramsoft.bbk.org/floatingbus.html#SNOWEFFECT и

2) http://www.worldofspectrum.org/faq/reference/48kreference.htm#IOContention .

В первой сказано, что в модели 48K байт по адресу 0x4000 берется на такте #14347. Во второй сказано, что первая задержка получается на такте #14335. Вопрос: кому верить?

Теперь представим, что вторая ссылка верна и ULA действительно начинает работу на такте #14335 так, что цикл обращения к памяти, попадая на этот такт, задерживается на 6 тактов. Тогда работа ULA должна выглядеть следующим образом.

T-state Action
14335 IDLE
14336 IDLE
14337 READ
14338 READ
14339 READ
14340 READ
14341 IDLE
14342 IDLE
14343 IDLE
14344 IDLE
...

Возникает вопрос: если такт #14335 -- это середина ожидания в цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)? Если он на самом деле читает раньше, тогда и задержки должны быть до такта #14335. Если позже, то и вывод на экран должен быть позже. Это даже если не обращать внимания на то, что, по этой схеме, сам вывод начинается не на границе цикла ULA.

Теперь еще интереснее. Эта же самая страница говорит, что расчет задержки при доступе к порту ведется ровно так же, как в случае обращения к памяти. Это что должно означать? Что четырехтактовое чтение из порта на такте #14342 пройдет без задержки? И что тогда будет делать ULA на такте #14345, когда ему наступит пора начинать свой цикл?

К слову. Я из вредности даже реализовал ровно эти задержки. Использовал тест BBG с цветными вертикальными полосами во всю высоту экрана. Разумеется, ничего похожего на правду это не дало.

ZEK
07.05.2008, 01:52
Возникает вопрос: если такт #14335 -- это середина ожидания в цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)? Если он на самом деле читает раньше, тогда и задержки должны быть до такта #14335. Если позже, то и вывод на экран должен быть позже.
Телепаты в отпуске, о чем речь очь смутно понятно

И ваще бред сопоставлять циклы ула с циклами процессора, они никак не синхронизированы, и расхождение будет зависить от убитости кондырей в схеме сброса, температуры в комнате, напряжения в сети и прочей лабуды :)

В общем попытаюсь с остановами клока проца на пальцах показать,
у ULA есть внутрений счетчик 3 бита, для примера (более точно нада копать) последние 2(или 3 фик его помнит) такта ула отдает процу остальные забирает себе (это в области медленной памяти), так вот если ула видит что проц ломица к памяти за пределами этого окна в 2(3) такта, она останвливает процу клок до окна,

и по наступлению окна проц отработает цикл доступа к памяти или порту с установленым битом A0=0, в случае чтение из порта с A0=1 ула не останавливает проц и мы все дружно получаем эффект порта FF (то есть то что собирается читать ула для вывода на телек)

примерно так

Добавлено через 1 минуту
ЗЫ. Мог где то наврать :) так что использование информации на свой страх и риск

Higgins
07.05.2008, 02:06
В общем попытаюсь с остановами клока проца на пальцах показать

Вы пьяны. Идите спать.

ZEK
07.05.2008, 08:47
И ваще бред сопоставлять циклы ула с циклами процессора
Тут не прав, первое же обращение к памяти ULA, синхронизирует проц под свои такты.


Вы пьяны. Идите спать.
Да нет, трезвый. Это логика останова проца в медленной памяти. Вот только не помню эти 8 циклов с какой частотой идут, толи 3.5(скорей всего) толи 7МГц.

Кста у меня сложилось точно такое же ощущение о вашей трезвости :)

Добавлено через 46 минут

Теперь представим, что вторая ссылка верна и ULA действительно начинает работу на такте #14335 так, что цикл обращения к памяти, попадая на этот такт, задерживается на 6 тактов. Тогда работа ULA должна выглядеть следующим образом.

T-state Action
14335 IDLE
14336 IDLE
14337 READ
14338 READ
14339 READ
14340 READ
14341 IDLE
14342 IDLE
14343 IDLE
14344 IDLE

Пипец, это сутки нада что бы догнать о чем речь, говорю телепаты в отпуске

в обще циклов READ будет всего 2

Добавлено через 51 минуту

цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)?
Абсолютно непонимаете работу спековской улы, во первых она ничего не ждет, во втрорых она работает с мометна когда ей будет достаточно електричества, у неё есть свой строго заданый цикл и все кто ей мешают -мостанавливаются, а если не останавливаются то и получаеццо эфекты снега и порт FF

Lethargeek
07.05.2008, 14:24
точно
Почему тогда с монитором такого не было?


эт всёж наверно от кривизны дешифрации #FE
При том что порт AY - нечетный?! :v2_wacko:

Кстати клевый глюк - взрывы всякие очучались неплохо, типо как через сабвуфер :)

А ты еще не забил на "двухбитный звук"? Не возникло желания с RD2 разобраться?.. :v2_devil:

Black_Cat
07.05.2008, 14:55
При том что порт AY - нечетный?!трудно гадать, не имея схемы глюкодрома, но явно ноги растут от кривизны
Почему тогда с монитором такого не было?опять же - монитор аналоговый или цифровой? на цифровом - не будет, на аналоговом - скорее будет

goodboy
07.05.2008, 15:21
При том что порт AY - нечетный?!

была ещё одна схема подключения AY по совсем другим портам и нередко в играх это учитывалось. если не ошибаюсь например в игре Motos.

(хотя этот ответ страшно далёк от начатой темы)

Lethargeek
07.05.2008, 15:30
опять же - монитор аналоговый или цифровой? на цифровом - не будет, на аналоговом - скорее будет
Советский "Электроника МЦ-какой-то" вроде, тоись тот же телевизор в принципе


была ещё одна схема подключения AY по совсем другим портам и нередко в играх это учитывалось. если не ошибаюсь например в игре Motos.
Точно помню про пуки в Sigma-7 и Exolon. Еще Cybernoid-1 (но там кажется просто звука не было, или мало).

Vladimir Kladov
07.05.2008, 16:14
1) http://www.ramsoft.bbk.org/floatingbus.html#SNOWEFFECT и

2) http://www.worldofspectrum.org/faq/r...m#IOContention .

В первой сказано, что в модели 48K байт по адресу 0x4000 берется на такте #14347. Во второй сказано, что первая задержка получается на такте #14335. Вопрос: кому верить?
Верить тем, кто живой, т.е. ВОС.

Про всё остальное: уле надо на 8 тактов прочитать из памяти 2 байта. Это легко посчитать из соображения 128 тактов - экран 32 байта, остальное - бордюр. Всё получится, если всё сделать аккуратно. Кривизну, Хиггинс, ищите у себя в коде. Или изучайте чужой.

ZEK
07.05.2008, 16:38
ула за строку читает 64 байта

Vladimir Kladov
07.05.2008, 18:47
ула за строку читает 64 байта
Естественно, 32 байта пикселей и 32 байта атрибутов. Я что-то не так написал? Ну, извиняюсь (но думал я правильно, это точно :))

ZEK
07.05.2008, 19:16
А как у Вас реализованы задержки в медленой памяти? Округляется время исполнения к кратной 4 тактам ??

Vladimir Kladov
07.05.2008, 21:16
Округляется время исполнения к кратной 4 тактам ??
По таблицам, код я выкладывал. Он, конечно, с багами, но не в части мультиколора или таймингов. Нет, не округляется (каким 4 тактам? Я даже не врубаюсь, что там можно округлять).

ZEK
07.05.2008, 22:07
7 тактные команды к 8 тактам (правильней конечно по машинным циклами)

Vladimir Kladov
08.05.2008, 16:49
7 тактные команды к 8 тактам
Так только скорпион делает.

Higgins
09.05.2008, 21:46
В первой сказано, что в модели 48K байт по адресу 0x4000 берется на такте #14347. Во второй сказано, что первая задержка получается на такте #14335. Вопрос: кому верить?

Здесь действительно верить FAQ на WOS. Соответственно, табличка с тактами работы ULA, которую я выписал выше тоже верна: задержки начинаются с такта #14335, первое чтение из видеопамяти на такте #14337. Такт, с которого видны чтения ULA через нечетный порт после 0x4000 и до 0x8000 -- это такт #14338 (разумеется), а не #14347, как говорит Ramsoft. (К слову, при такой реализации floatspy работает именно так, как сказано на страничке Ramsoft, т.е. просто ошиблись с подсчетом тактов.)


Возникает вопрос: если такт #14335 -- это середина ожидания в цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)?

Насчет такта первого вывода на экран WOS определенно врет. У меня получилось, что ULA выводит первые точки из ячеек (0x4000)/(0x5800) на следующий такт после первых четырех тактов чтения ULA. Это уже похоже на какую-то логику.


Теперь еще интереснее. Эта же самая страница говорит, что расчет задержки при доступе к порту ведется ровно так же, как в случае обращения к памяти.

Способ расчета величины задержки действительно один и тот же для памяти и портов. Условия и способы применения самих задержек разные. Причем задержки по памяти и портам расписаны раздельно, а задержки на дополнительных тактах M-циклов процессора смешаны с задержками по памяти. Хотя логика и причина у всех этих задержек одна и та же.

ZXMAK
10.05.2008, 15:35
нужно еще учитывать что читаемый байт не сразу попадает в видеосигнал, он предварительно защелкивается в сдвиговом регистре, после чего уже начинаются сдвижки...

Higgins
11.05.2008, 13:27
читаемый байт не сразу попадает в видеосигнал, он предварительно защелкивается в сдвиговом регистре, после чего уже начинаются сдвижки...

Да, причем у меня получилось так, что бордюр читается каждые 4 такта, т.е. дважды за цикл ULA, т.е. выводится по 8 пикселей.

ZXMAK
12.05.2008, 23:14
Да, причем у меня получилось так, что бордюр читается каждые 4 такта, т.е. дважды за цикл ULA, т.е. выводится по 8 пикселей.

в схеме пентагона вроде бордюр напрямую из регистра порта #fe пускался, без всяких 4 тактов, хотя возможно я путаю с другим клоном - нужно проверить

ARTi
13.05.2008, 01:15
Да, в пентагоне напрямую.

Lethargeek
13.05.2008, 02:37
Везде должен быть напрямую :)

Vladimir Kladov
14.05.2008, 20:41
Везде должен быть напрямую
В фирменных и в Скорпионе - кратно 8 пикселям экрана, или 4 тактам.

SAM style
14.05.2008, 21:03
В фирменных и в Скорпионе - кратно 8 пикселям экрана, или 4 тактам.По схеме зелёного скорпа на D33 и D34 сделан селектор цвета - каждые 8 пикселей в момент чтения байта атрибутов защелкивается или он, или сделаный из взятого с D35 (это #FE) цвета бордюра (ink=border, paper=border, bright=0, flash=0)

Lethargeek
15.05.2008, 02:52
В фирменных и в Скорпионе - кратно 8 пикселям экрана, или 4 тактам.
Опа... это че значит - там нельзя на бордюре произвольные диагональные и кривые линии получить? То есть например последнюю часть Rage в принципе не получится под фирменный Спек пофиксить?

Vladimir Kladov
15.05.2008, 05:55
последнюю часть Rage в принципе не получится под фирменный Спекименно

Lethargeek
15.05.2008, 12:00
А кто-то еще сомневается, что "спектрум *****" :D

ZEK
16.05.2008, 18:47
По схеме зелёного скорпа на D33 и D34 сделан селектор цвета - каждые 8 пикселей в момент чтения байта атрибутов защелкивается или он, или сделаный из взятого с D35 (это #FE) цвета бордюра (ink=border, paper=border, bright=0, flash=0)
Wait нада учитывать, хотя тож вопрос, генерит ли он wait на бордюре

Vladimir Kladov
16.05.2008, 20:29
вопрос, генерит ли он wait на бордюреесли это тот wait, который выравнивает M1 по чётным тактам, то нет (в смысле не учитывать): wait сам по себе, выравнивание бордюрного вывода на 8 пикселей экрана - само по себе. Доказательство - пара бордюрных демок для скорпиона. Там бордюр стоит как вкопанный и строго выровнен с изображением на основном экране.

ZXMAK
16.05.2008, 22:00
Wait нада учитывать, хотя тож вопрос, генерит ли он wait на бордюре

а зачем на бордюре wait? :v2_smile:

wait активируется для того чтобы проц и ула не конфликтовали обращаясь одновременно к видеопамяти, для бордюра память не используется:v2_wink2:

ZEK
16.05.2008, 22:03
Да как сказать пентагон ваще без Wait обходится, и из за упрощения спокойно того что зашито в альтере могли и не учесть, но судя по тому что туда сигнал идет то это не спроста.

Vladimir Kladov
16.05.2008, 22:10
это не спростаЭто наверное какая нибудь хитрющая защита от взлома и попыток воспроизведения скорпионов кем-то кроме фирмы.

ARTi
27.05.2008, 12:34
Можно уточнить, как конкретно проявляется округление M1? Всегда? Только в режиме турбо? Или при доступе к видеопамяти одновременно с видеоконтроллером? А то я что-то запутался ;)

Vladimir Kladov
27.05.2008, 15:50
Можно уточнить, как конкретно проявляется округление M1? Всегда? Только в режиме турбо? Или при доступе к видеопамяти одновременно с видеоконтроллером? А то я что-то запуталсяВ скорпионе всегда. Иначе мультиколор бы не работал. Наверное, в турбе есть ещё дополнительные задержки при обращению к экрану, но я в эмуляторе это не реализовывал для простоты. Мне мультиколор нужен для демок, а демок для скорпиона маловато, и думаю, для турбы их просто нет (как и для других клонов), так что особенно задержками в турбе я не задавался.

ARTi
29.05.2008, 16:35
Почему тогда турбо в Скорпионе при выполнении кода из ОЗУ не 2x? Память подает /WAIT? Какие задержки в каких случаях осуществляются?
Спасибо ;)

Vladimir Kladov
30.05.2008, 22:27
Почему тогда турбо в Скорпионе при выполнении кода из ОЗУ не 2x? Память подает /WAIT?
Скорее да чем нет. Но я же сказал, мне детали в этом плане не нужны, я просто делаю х2 и отрубаю мультиколор в эмуляции.

ARTi
21.06.2008, 15:08
Все же вопрос по задержкам в Скорпионе в режиме турбо актуален, теперь эта информация нужна мне самому. Кто-нибудь может намекнуть, где или как можно получить эти сведения?

Vladimir Kladov
21.06.2008, 21:17
Если в наличии есть реальный скорпион, то вы можете провести тесты, и получить нужную информацию. Если нет, надо искать владельцев реала, и договариваться.

Тесты, например, такие: в цикле увеличивается BC, а к области экрана происходит обращение, и так до прерывания. Затем то же самое, но обращение происходит, например, к 8000h вместо области экрана. Затем сравнивается значение BC и подсчитывается количество тактов, истраченных на задержки при обращении к памяти. Чаще всего такого грубого теста достаточно, чтобы узнать стоимость одной задержки. Далее тест можно чуть изменить, например, делать в цикле 2 обращения, и опять провести сравнение с эталоном. Этого будет достаточно, чтобы проверить правильность первого теста.

ARTi
26.06.2008, 01:49
Эх, вот реала-то в наличии и нету :(
Вообще-то я задаю вопросы вместо того, чтобы проверять на реале, потому лишь, что времени прошло много, наверняка уже кто-то проделал эту работу. Не хочу изобретать велосипед, да еще и людей напрягать зазря...