Просмотр полной версии : Точное описание задержек Скорпиона
introspec
31.03.2013, 17:53
всем счастливо
introspec
01.04.2013, 13:52
Нашёл неплохой вариант ответа на первый вопрос в старом обсуждении на форуме: http://zx.pk.ru/showthread.php?p=5482 (см. особенно последние два комментария GriV).
Вопрос о прерывании всё ещё открыт.
Раз вопросы оказались сложными, может быть, кто-то знает названия программ или демок с бордюрными и/или мультиколорными эффектами специально для скорпиона?
introspec
01.04.2013, 21:15
http://zx.pk.ru/showthread.php?p=133434
91 и 92
Большое спасибо, уже скачал. Там вообще полезное обсуждение было.
SoftLight
02.04.2013, 09:06
Там вообще полезный автор. Был:) Он то и сей час есть, но уже в другом качестве , дай Бог ему здоровья:)))
вот еще пост
http://zx.pk.ru/showpost.php?p=562044&postcount=316
А чего это Владимир в 2009 ушел с форума? Вот kolmck.net он регулярно обновляет в отличие от своего эмулятора. :( А ведь какие планы были...
Раз вопросы оказались сложными, может быть, кто-то знает названия программ или демок с бордюрными и/или мультиколорными эффектами специально для скорпиона?
Satisfaction (http://vtrdos.ru/demoz/demozrus/SATISF.ZIP) - фикс мультиколорной части StarWars под зеленый скорпион. Все остальное, что я видел из фиксенного под скорпион это было для желтой платы. Может, конечно, я что-то и упустил, но вроде как больше я не видел для зеленой платы фиксов.
introspec
02.04.2013, 15:33
Все остальное, что я видел из фиксенного под скорпион это было для желтой платы.
О, это здорово, что разговор зашёл про жёлтые/зелёные платы. Дело в том, что тайминги Скорпиона по версии Unreal или Spectacular отличаются от таймингов Скорпиона по версии EmuZWin. Либо кто-то из них не прав, либо они имели в виду разные скорпионы! Вы случайно не в курсе, какие из вариантов Скорпиона подразумевают эти эмуляторы?
Я посмотрел мультиколор в Satisfaction - он работает, но с заметной помехой в двух первых эмуляторах, знающих о Скорпионе. Загрузить демку в EmuZWin я не смог. Кто-нибудь видел это дело на реале? насколько хорошо она работает? Следует ли это понимать так, что Unreal и Spectacular эмулируют "жёлтую" плату, а EmuZWin, если бы заработал, работал бы как "зелёная" плата?
---------- Post added at 12:33 ---------- Previous post was at 11:56 ----------
Satisfaction (http://vtrdos.ru/demoz/demozrus/SATISF.ZIP) - фикс мультиколорной части StarWars под зеленый скорпион.
Я сохранил нужный эффект из Spectacular в *.z80 и загрузил в EmuZWin. Времянки по умолчанию ведут к помехам, но если поменять число тактов в строке с 224 на 228, получается почти идеальный эффект. Вы сказали, что этот эффект подгоняли под зеленый скорпион. Тогда у меня получается такая картина:
Есть "жёлтый" скорпион, с времянкой подобранной для совместимости с 48К: 69888 тактов в кадре, 224 такта в строке. "Жёлтого" скорпиона неплохо эмулируют Unreal и Spectacular.
Есть "зелёный" скорпион, с времянкой подобранной для совместимости со 128К: 70908 тактов в кадре, 228 тактов в строке. "Зелёного" скорпиона эмулирует EmuZWin.
У обоих видов скорпионов, если верить эмуляторам, одинаковая структура задержек (т.н. "Even M1"). Суть этих задержек (спасибо GriV) заключается в том, что для выполнения команд, попавших на нечётный номер такта процессора, требуется один дополнительный такт. Допустим, мы находимся на чётном такте. Тогда команды
XOR A; 4
RET NZ; 5
INC A; 5 - лишний такт, добавленный из-за того, что команда началась с нечётного такта
займут 14 тактов. Т.о., задержки могут, теоретически, затронуть любую команду и, в специально подобранном худшем случае могут замедлить программу на 25%. Но исполнение любой команды с чётным числом тактов всегда выравнивает счётчик тактов на чётное число.
Я поэкспериментировал с этими эмуляторами и по вопросу продолжительности выполнения прерываний. Насколько я могу понять, прерывание ведёт себя как самая обычная команда продолжительностью 19 тактов. Т.к. HALT фактически выполняет в цикле NOPы, прерывание в режиме IM 2 после HALT займёт те же 19 тактов что и обычно, вот только на Скорпионе после HALT+прерывания мы оказываемся на нечётном номере такта, т.е. всегда добавляем один такт задержки к последующей команде.
SoftLight
02.04.2013, 15:50
В ZXMAK2 еще надо глянуть, там ведь можно плагинами расширять функциональность. Не было ли там двух версий платы.
introspec
02.04.2013, 16:06
В ZXMAK2 еще надо глянуть, там ведь можно плагинами расширять функциональность. Не было ли там двух версий платы.
Я посмотрел исходники; там только одна времянка, та, которую я назвал "жёлтой", т.е. 224 такта в строке и т.д. Но большое спасибо за идею залезть в эти исходники, т.к. более подробной базы данных по времянкам я нигде не видел!
Для начала обозначу, что было 3 версии Scorpion'a:
1. Scorpion ZS 256 (желтая плата)
2. Scorpion ZS 256 Turbo (желтая плата, добавлен турбо режим)
3. Scorpion ZS 256 Turbo+ (зеленая плата, несколько увеличен период кадровой развертки, и как следствие , те, в основном музыкально-демонстрационные программы, которые не “помещались “ в промежуток между двумя INT-ами, и поэтому работавшие в 2 раза медленнее, теперь работают как положено, сигнал INT формируется цифровым способом , его длительность жестко задана и равна 9mks, причем сделано так, что в программах, чувствительных к длительности сигнала INT и ранее работавших неправильно в режиме Turbo из-за повторного захвата прерывания, теперь этого не происходит. Во всех других моделях ”компьютеров, которые мы выбираем”, этот дефект, по нашим сведениям, присутствует (Источник (http://scorpion.ru/spectrum/hard/plataSCT.htm)).
О, это здорово, что разговор зашёл про жёлтые/зелёные платы. Дело в том, что тайминги Скорпиона по версии Unreal или Spectacular отличаются от таймингов Скорпиона по версии EmuZWin. Либо кто-то из них не прав, либо они имели в виду разные скорпионы! Вы случайно не в курсе, какие из вариантов Скорпиона подразумевают эти эмуляторы?
Везде эмулируется Scorpion ZS 256 (Желтый), что за тайминги в EmuZWin я не знаю. По дефолту считаю, что правильные тайминги в Unreal.
Я посмотрел мультиколор в Satisfaction - он работает, но с заметной помехой в двух первых эмуляторах, знающих о Скорпионе.
Все правильно, ибо там эмулируется желтый скорпион. Что бы посмотреть мою версию Satisfaction в UNREAL добавь в конфиг эмулятора вот этот пресет: PRESET.SCORPION_TURBO+=70784,14344,224,50,32,0,1,0 ,0,1.
По умолчанию для Scorpion ZS 256 имеем следующую картину: 224 такта х 312 строк = 69888 тактов, плюс активный Even M1.
Для Scorpion ZS 256 Turbo+ получаем, соответственно: 224 такта х 316 строк = 70784 такта, плюс не активный Even M1.
В принципе, можно в дефолтном пресете на Scorpion ZS 256 просто убрать галочку с Even M1 - мультиколорная часть также будет работать. Но на данный момент, я пока придерживаюсь мнения, что количество строк в зеленом скорпионе все же 316, т.к. при таком раскладе все тесты на INT, типа Jemmini Commander, в демке Action и тп. показывают те же результаты, что и на реальном зеленом скорпионе. А при 312 строках они показывают уже отличные значения от реального зеленого скорпиона.
Загрузить демку в EmuZWin я не смог.
Я загрузил, мультиколорная часть там не правильно работает.
Кто-нибудь видел это дело на реале? насколько хорошо она работает?
Например я видел, ибо фиксил демо на реальном зеленом скорпионе. Все работает ок! :)
Следует ли это понимать так, что Unreal и Spectacular эмулируют "жёлтую" плату, а EmuZWin, если бы заработал, работал бы как "зелёная" плата?
Нет, зеленую плату, по дефолту, не эмулирует ни один из видимых мною эмулей, в том числе и ZXMAK2.
Я сохранил нужный эффект из Spectacular в *.z80 и загрузил в EmuZWin. Времянки по умолчанию ведут к помехам, но если поменять число тактов в строке с 224 на 228, получается почти идеальный эффект. Вы сказали, что этот эффект подгоняли под зеленый скорпион. Тогда у меня получается такая картина:
Есть "жёлтый" скорпион, с времянкой подобранной для совместимости с 48К: 69888 тактов в кадре, 224 такта в строке. "Жёлтого" скорпиона неплохо эмулируют Unreal и Spectacular.
Есть "зелёный" скорпион, с времянкой подобранной для совместимости со 128К: 70908 тактов в кадре, 228 тактов в строке. "Зелёного" скорпиона эмулирует EmuZWin.
У обоих видов скорпионов, если верить эмуляторам, одинаковая структура задержек (т.н. "Even M1"). Суть этих задержек (спасибо GriV) заключается в том, что для выполнения команд, попавших на нечётный номер такта процессора, требуется один дополнительный такт. Допустим, мы находимся на чётном такте. Тогда команды
XOR A; 4
RET NZ; 5
INC A; 5 - лишний такт, добавленный из-за того, что команда началась с нечётного такта
займут 14 тактов. Т.о., задержки могут, теоретически, затронуть любую команду и, в специально подобранном худшем случае могут замедлить программу на 25%. Но исполнение любой команды с чётным числом тактов всегда выравнивает счётчик тактов на чётное число.
Я поэкспериментировал с этими эмуляторами и по вопросу продолжительности выполнения прерываний. Насколько я могу понять, прерывание ведёт себя как самая обычная команда продолжительностью 19 тактов. Т.к. HALT фактически выполняет в цикле NOPы, прерывание в режиме IM 2 после HALT займёт те же 19 тактов что и обычно, вот только на Скорпионе после HALT+прерывания мы оказываемся на нечётном номере такта, т.е. всегда добавляем один такт задержки к последующей команде.
Насчет таймингов я уже отписался выше.
introspec
02.04.2013, 19:47
В принципе, можно в дефолтном пресете на Scorpion ZS 256 просто убрать галочку с Even M1 - мультиколорная часть также будет работать. Но на данный момент, я пока придерживаюсь мнения, что количество строк в зеленом скорпионе все же 316, т.к. при таком раскладе все тесты на INT, типа Jemmini Commander, в демке Action и тп. показывают те же результаты, что и на реальном зеленом скорпионе. А при 312 строках они показывают уже отличные значения от реального зеленого скорпиона.
Большое спасибо за очень ценную информацию. Не хочу показаться совсем навязчивым, но у вас прозвучала небольшая неуверенность относительно кол-ва тактов в кадре (= числа строк на экране). Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
Большое спасибо за очень ценную информацию. Не хочу показаться совсем навязчивым, но у вас прозвучала небольшая неуверенность относительно кол-ва тактов в кадре (= числа строк на экране). Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
Я бы рад помочь, но, к сожалению, у меня уже нет доступа реальному Scorpion'у. Но уверен, что среди посетителей данного форума найдется реальный зеленый скорпион, для теста!
В 8col есть настройки для ЧЕТЫРЁХ видов скорпионов:
224x320-wait
224x312-wait
216x?-wait
224x312-nowait
Последний - вроде у Jerri.
introspec
05.04.2013, 13:45
В 8col есть настройки для ЧЕТЫРЁХ видов скорпионов:
Спасибо за информацию! В принципе, сейчас мой код уже может работать с любым из этих вариантов, нет необходимости лезть в дальнейшие подробности.
Если честно, я не верю в компьютеры с 216 тактами в строке. Читая форумы, я видел насколько мало людей реально понимают, как эти waits работают, так что, мне кажется, 216 тактов в строке - это миф, созданный людьми, подгонявшими эффекты на реалах без понимания как работают waits.
Спасибо за информацию! В принципе, сейчас мой код уже может работать с любым из этих вариантов, нет необходимости лезть в дальнейшие подробности.
Если честно, я не верю в компьютеры с 216 тактами в строке. Читая форумы, я видел насколько мало людей реально понимают, как эти waits работают, так что, мне кажется, 216 тактов в строке - это миф, созданный людьми, подгонявшими эффекты на реалах без понимания как работают waits.
216 тактов может быть при тактовой 13.5 МГц и стандартной строчной (например). В принципе такие реалы могли существовать.
А для чего вам эта информация, ели не секрет?
introspec
05.04.2013, 20:24
216 тактов может быть при тактовой 13.5 МГц и стандартной строчной (например). В принципе такие реалы могли существовать.
А для чего вам эта информация, ели не секрет?
Нет, я понимаю, что теоретически возможно всё что угодно, но я уже собрал неплохой массив информации по оригинальным машинам и клонам, и, насколько я вижу, нет ни одной тиражной машины с числом тактов в строке отличным от 224 или 228 (турбо я не учитываю, т.к. поддерживать не буду).
Зачем - пока секрет, наверное, потому что проект может "пойти" или "не пойти", рано пока людей тревожить. Могу сказать загадочно: мне захотелось сделать очень непростой клон одной крайне простой игры. Для этого мне нужен мультиколор, и хочется сделать его по-настоящему работающим на большом кол-ве платформ. В данный момент я пытаюсь понять, что я могу сделать в заданных этими требованиями рамках и смогу ли я (захочу ли я) доводить проект до конца. Основная работа в данный момент - над кодами, которые могли бы максимально автоматизировать вычисление таймингов конкретного спектрума.
Ляпну, пожалуй, свои пять копеек.
Когда я в 2001г. интересовался этой темой, то мне попалась информация, что бывает только три длины строк: 216, 224 и 232 такта.
При этом, если у клона есть порт #FF, то длину строки можно высчитать. У меня был желтый скорп (не турбо), у ZS`a - зелёный. Тест выдавал разные значения.
introspec
06.04.2013, 14:39
Когда я в 2001г. интересовался этой темой, то мне попалась информация, что бывает только три длины строк: 216, 224 и 232 такта.
Спасибо, постараюсь поддержать и такие варианты; 232 - точно не будет проблемой, но 216 может не получиться, посмотрим.
Нет, зеленую плату, по дефолту, не эмулирует ни один из видимых мною эмулей, в том числе и ZXMAK2.
ну это можно быстро исправить, а есть тайминги этой зеленой платы? :smile:
---------- Post added at 03:29 ---------- Previous post was at 03:27 ----------
Основная работа в данный момент - над кодами, которые могли бы максимально автоматизировать вычисление таймингов конкретного спектрума.
посмотри тему про эмуляцию дельты в разделе эмуляторов, там мы вычисляли тайминги дельты, включая разные тестовые программки.
---------- Post added at 03:39 ---------- Previous post was at 03:29 ----------
Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
интересный тестик :)
на чем основан принцип измерения?
PS: на будующее просьба выкладывать файлы в ZIP... Люблю перетаскивать ссылки на архивы из браузера в окно своего эмулятора, но поддержки RAR в нем пока нет, т.к. сложно найти opensource код для RAR распаковщика. Поэтому приходится сохранять, распаковывать и только затем открывать...
проверил на `зелёном` скорпе
70784/1307/4t
70786/1046/5t
а вот тут цифры скачут
70782/871/6t
70788/872/6t
224t per screen line
http://i230.photobucket.com/albums/ee81/ex0l0n/zs256.jpg
---------- Post added at 10:05 ---------- Previous post was at 10:02 ----------
мне захотелось сделать очень непростой клон одной крайне простой игры. Для этого мне нужен мультиколор, и хочется сделать его по-настоящему работающим на большом кол-ве платформ.
советую посмотреть (если ещё не видел) игрушку BuzzSaw http://www.worldofspectrum.org/infoseekid.cgi?id=0027057
и демо RiverRaid http://www.worldofspectrum.org/infoseekid.cgi?id=0023528
Нет, я понимаю, что теоретически возможно всё что угодно, но я уже собрал неплохой массив информации по оригинальным машинам и клонам, и, насколько я вижу, нет ни одной тиражной машины с числом тактов в строке отличным от 224 или 228 (турбо я не учитываю, т.к. поддерживать не буду).
Да нет, не "теоретически". Может вы просто не застали времена, когда проблемой было абсолютно все, включая кварцы. Ставили то, что было. Не было никакого кварца -- паяли LC-контур. В указанной ситуации 216 тактов на строку получится и у самых тиражных машин, включая простейшие самоделки.
Зачем - пока секрет, наверное, потому что проект может "пойти" или "не пойти", рано пока людей тревожить. Могу сказать загадочно: мне захотелось сделать очень непростой клон одной крайне простой игры. Для этого мне нужен мультиколор, и хочется сделать его по-настоящему работающим на большом кол-ве платформ. В данный момент я пытаюсь понять, что я могу сделать в заданных этими требованиями рамках и смогу ли я (захочу ли я) доводить проект до конца. Основная работа в данный момент - над кодами, которые могли бы максимально автоматизировать вычисление таймингов конкретного спектрума.
А стоит ли? Неужели вы на самом деле считаете, что сейчас это актуально? Просто, может быть, имеет смысл сделать хоть что-то для одной платформы, чем не сделать ничего для многих?
ну это можно быстро исправить, а есть тайминги этой зеленой платы?
Согласно значений, полученных Goodboy на реальном зеленом скорпионе ...
проверил на `зелёном` скорпе
70784/1307/4t
70786/1046/5t
а вот тут цифры скачут
70782/871/6t
70788/872/6t
224t per screen line
...подтверждаются мои данные, что Scorpion ZS 256 Turbo+ имеет 224 такта х 316 строк = 70784 такта, плюс не активный Even M1. Прочие тайминги, можно взять из пресета (http://zx.pk.ru/showpost.php?p=588787&postcount=9), который я дал для эмулятора Unreal.
introspec
08.04.2013, 18:24
интересный тестик :)
на чем основан принцип измерения?
PS: на будующее просьба выкладывать файлы в ZIP.
Этот тест измеряет кол-во тактов в кадре используя несколько предположений:
1) Кол-во тактов должно быть кратно четырём (критичное требование, но, насколько я понимаю, всегда выполняющееся).
2) Кол-во тактов должно находиться в пределах от 65600 до примерно 75000. Это требование можно снять, но меня, если честно, не очень интересуют турбированные машины, а для остальных этого будет достаточно.
3) В основе техники измерения - замечание Titus (http://zx-pk.ru/showpost.php?p=578614&postcount=7), но реализованное очень хитрым образом. Точность метода Tutus - плюс/минус 4 такта. Я подогнал такты таким образом, что если общее число тактов кратно 4, ответ программы во второй строке всегда будет правильным ответом.
4) Программа правильно работает на машинах с задержками скорпионовского типа, но даёт ответ во второй строке _меньше на 4 такта_.
5) Третья и четвёртая строки дают более грубый и, вообще говоря, не гарантированный ответ; они нужны мне для распознания задержек Скорпиона.
Я сделал этот тест в рамках проекта по изготовлению реально портабельного мультиколора, но сейчас он немного разросся и я, наверное, сделаю из этого теста самостоятельную программу, т.к. ничего сопоставимого по универсальности, и одновременно, точности, на спектруме сейчас, кажется, нет. Я читал тред по Дельте (у меня тоже когда-то была белая с двумя пробелами), там есть очень интересные программы, но работать, одновременно, и с вейтовыми и безвейтовыми машинами, насколько я понимаю, никто пока больше не умеет.
Про zip учту (хотя ну очень его не люблю! :)
---------- Post added at 14:31 ---------- Previous post was at 14:05 ----------
проверил на `зелёном` скорпе
70784/1307/4t
70786/1046/5t
а вот тут цифры скачут
70782/871/6t
70788/872/6t
224t per screen line
Цифры для 5т и 6т тестов могут скакать/отличаться на разных машинах, это нормально. Важные выводы отсюда такие:
ВНИМАНИЕ РАЗРАБОТЧИКАМ ЭМУЛЯТОРОВ =>
У "зелёного" скорпиона (Scorpion ZS 256 Turbo+)
70784 такта в кадре (измерено первым тестом TimeChart)
224 такта в строке (оценено, т.е. "угадано" на основании теста выше)
и НЕТ задержек M1 (т.к. время исполнения 5т и 6т команд в TimeChart существенно отличается).
Тесты для определения для первого байта экрана я пока не сделал. Общий подход понятен, конечно, но хочется сделать не хуже чем в ulatest3. К сожалению, достигнутая там точность реально нетривиальная, пусть и подогранная к конкретной машине.
=> КОНЕЦ
советую посмотреть (если ещё не видел) игрушку BuzzSaw и демо RiverRaid
Смешно, я как раз с этого и начал. Сначала я хотел делать нормальный клон River Raid, потом увидел демо, потом посмотрел BuzzSaw и понял, что сейчас самые интересные продвижения идут в мультиколоре. Но мультиколор в этих двух программах не очень гибкий, просто заточен под западные спектрумы.
---------- Post added at 14:38 ---------- Previous post was at 14:31 ----------
А стоит ли? Неужели вы на самом деле считаете, что сейчас это актуально? Просто, может быть, имеет смысл сделать хоть что-то для одной платформы, чем не сделать ничего для многих?
Я бы сказал сильнее: любое программирование для спектрума сейчас неактуально. Я поставил себе конкретное тех. задание, которое представляет интересный challange (для меня). У меня нет задачи сделать что-то конкретное, мне просто хочется получать удовольствие от процесса.
Если в процессе моего получения удовольствия, получится что-то интересное и/или полезное другим - замечательно. Если нет - не проблема. Но если я перестану получать удовольствие от процесса, ничего хорошего точно не получится.
---------- Post added at 15:24 ---------- Previous post was at 14:38 ----------
...подтверждаются мои данные, что Scorpion ZS 256 Turbo+ имеет 224 такта х 316 строк = 70784 такта, плюс не активный Even M1.
Совершенно верно, я согласен, хотя и сомневался немного (это был первый раз когда я видел такую цифру для числа тактов где-либо!). Самое обидное, что мой старый скорпион, купленный в 1996 году, был, почти наверняка, как раз зелёным, но в то время, когда он у меня ещё был, я не оценил по-настоящему его времянку с т.зр. совместимости с 48к спектрумом.
Прозвонил трупик зеленого Скорпиона. Схемы нарисованы с ошибкой (например эта:http://scorpion-zs.narod.ru/Scorpi_sch.pdf). По схеме на вход предустановки счетчика DD5 идет код BK-,0,0,0. На самом деле там 0,BK-,0,0 - то есть действительно 316 строк в кадре.
ВНИМАНИЕ РАЗРАБОТЧИКАМ ЭМУЛЯТОРОВ =>
У "зелёного" скорпиона (Scorpion ZS 256 Turbo+)
70784 такта в кадре (измерено первым тестом TimeChart)
224 такта в строке (оценено, т.е. "угадано" на основании теста выше)
и НЕТ задержек M1 (т.к. время исполнения 5т и 6т команд в TimeChart существенно отличается).
Кроме этого, разработчик эмулятора должен учесть, что Scorpion ZS 256 Turbo+ умел программно управлять ТУРБО режимом:
LD A,#1F
IN A,(#FD)
включают турбо-режим, а:
LD A,#7F
IN A,(#FD)
выключают турбо-режим.
Плюс ко всему, благодаря тому, что на зеленой плате была сделана упрощенная дешифрация портов музыкального сопроцессора (не используется адрес А12 ЦП для дешифрации) , то игрались все музыкальные композиции (digital, в частности) обращавшиеся к портам музыкального сопроцессора FFFDh и BFFDh по укороченному адресу FDh.
Вот, для затравки, мои версии двух демок, которые не работают правильно, на данный момент, ни в одном эмуляторе, но заточенные под Scorpion ZS 256 Turbo+:
Satisfaction (http://vtrdos.ru/demoz/demozrus/SATISF.ZIP) - Multicolor + Digital music
Action (http://vtrdos.ru/demoz/enl96/ACTION_.ZIP) - Программный Turbo-режим.
Согласно значений, полученных Goodboy на реальном зеленом скорпионе ...
...подтверждаются мои данные, что Scorpion ZS 256 Turbo+ имеет 224 такта х 316 строк = 70784 такта, плюс не активный Even M1. Прочие тайминги, можно взять из пресета (http://zx.pk.ru/showpost.php?p=588787&postcount=9), который я дал для эмулятора Unreal.
а протестить эти тайминги можно чем-то? есть мультиколоры под него?
introspec
09.04.2013, 02:36
а протестить эти тайминги можно чем-то? есть мультиколоры под него?
Faster дал демо подогнанную им самим под зелёный скорпион; а я проверял под Unreal, что это действительно хорошо работает: http://zx-pk.ru/showpost.php?p=588705&postcount=5
Вам нужен первый эффект второй части. В принципе, если моя TimeChart показывает правильное число во 2-ой и 5 строках, а также близкие (ближе 5 и 6 тактов, соотв.) числа в 3 и 4-ой строках, это тоже неплохой тест :)
правильно, на данный момент, ни в одном эмуляторе, но заточенные под Scorpion ZS 256 Turbo+:
Satisfaction (http://vtrdos.ru/demoz/demozrus/SATISF.ZIP) - Multicolor + Digital music
Action (http://vtrdos.ru/demoz/enl96/ACTION_.ZIP) - Программный Turbo-режим.
добавил ULA Scorpion [Green] в ZXMAK2 2721 (https://zxmak2.codeplex.com/releases/view/104757) :)
по горизонтали тайминги могут быть смещены, т.к. не чем проверить, в демке satisfaction только построчный мультиколор
добавил ULA Scorpion [Green] в ZXMAK2 2721 (https://zxmak2.codeplex.com/releases/view/104757) :)
по горизонтали тайминги могут быть смещены, т.к. не чем проверить, в демке satisfaction только построчный мультиколор
Эм, не работает мультиколорная часть в режиме Scorpion. :) Объясню почему:
правильно, на данный момент, ни в одном эмуляторе, но заточенные под Scorpion ZS 256 Turbo+:
Satisfaction - Multicolor + Digital music
Action - Программный Turbo-режим.
Когда я говорил, что эти демки не работают ни в одном эмуляторе, я имел ввиду, что они не работают в режиме Scorpion, однако в режиме Pentagon они работают замечательно. Суть состоит в том, что при запуске загрузчика демки проверяется на каком компе она запущена и если это Pentagon, то стартует с дефолтными настройками, а если это Scorpion, то соответственно выставляются настройки для Scorpion'a. А ты, судя по всему, посчитал, что Satisfaction заточена только под Scorpion ZS 256 Turbo+ и получилось сейчас, что пресет ULA (Scorpion green) = ULA (Pentagon).
Эм, не работает мультиколорная часть в режиме Scorpion. :) Объясню почему:
Когда я говорил, что эти демки не работают ни в одном эмуляторе, я имел ввиду, что они не работают в режиме Scorpion, однако в режиме Pentagon они работают замечательно. Суть состоит в том, что при запуске загрузчика демки проверяется на каком компе она запущена и если это Pentagon, то стартует с дефолтными настройками, а если это Scorpion, то соответственно выставляются настройки для Scorpion'a. А ты, судя по всему, посчитал, что Satisfaction заточена только под Scorpion ZS 256 Turbo+ и получилось сейчас, что пресет ULA (Scorpion green) = ULA (Pentagon).
да, точно, я тестил на пентагоне с юлой скорпиона :biggrin: В коде уже исправил, вечером релиз обновлю
Action - Программный Turbo-режим.
Зачем он там?
Зачем он там?
чтобы некоторые эффекты не тормозили.
зарелизил исправленную версию
---------- Post added at 23:39 ---------- Previous post was at 23:31 ----------
проверил на `зелёном` скорпе
запусти пожалуйста на зеленом скорпе вот этот тестик: http://zx.pk.ru/attachment.php?attachmentid=29750&d=1317941524
и выложи сюда фотку экрана, по ней можно будет тайминги точно восстановить (если там задержек нет :))
запусти пожалуйста на зеленом скорпе вот этот тестик: http://zx.pk.ru/attachment.php?attac...0&d=1317941524
и выложи сюда фотку экрана, по ней можно будет тайминги точно восстановить (если там задержек нет
у меня на плате сделана перемычка на счётчик (вместо одного сигнала другой),
без этой доработки телевизор samsung не синхронизировал изображение.
кажется она влияет на прорисовку бордюра, поэтому отображение тестовой картинки может быть некорректным. вечером попробую.
ну. ну и как это работает? первый эффект первой части вроде как работает (или это в нем мультиколор? тогда ткните носом мну). Буквы уплывают вдаль. После нажатия Space начинается загрузка второй части... И фсиё. Висит. ЧЯДНТ ?
Имелось ввиду как бы вторая глобальная часть, после надписи THE END - мультиколорная часть StarWars. Чтобы запустить под эмулем демку, после ее старта, в настройках эмулятора в Betadisk (хотя, по хорошему, он должен значится как beta128, а не betadisk) выстави галочку на WD93 No delays и нажми Apply.
Цитата:
Сообщение от Faster
правильно, на данный момент, ни в одном эмуляторе, но заточенные под Scorpion ZS 256 Turbo+:
Satisfaction - Multicolor + Digital music
Action - Программный Turbo-режим.
Цитата:
Вам нужен первый эффект второй части.
---------
ну. ну и как это работает? первый эффект первой части вроде как работает (или это в нем мультиколор? тогда ткните носом мну). Буквы уплывают вдаль. После нажатия Space начинается загрузка второй части... И фсиё. Висит. ЧЯДНТ ?
Нужно no-delay включить, загрузчик к эмуляции вг-шки привередливый
я в satisfaction копался давно, но насколько помню там загрузка частей стандартная #3d13, напрямую сделано только отрубание magic кнопки.
Включал, по совету Faster, результат отрицательный. Первый раз сразу сбросилось при переходе к загрузке второй части ( на которой висит без включения оной опции). но чаще всего висит просто при переходе в 128 TR-DOS. Это именно с версией Faster.
С той версией, которая на сайте инноплАААнетянена - с той нормально, мУльтиколор увидел, вроде вполне приличный, No Delay там не включал. ЧЯА5НТД ?
Я запустил демо на эмуле по алгоритму описанному выше. Та версия, что у ААА по мультиколору ничем не отличается от той, что ты хотел увидеть в моей версии, так что ничего не потерял:)
я в satisfaction копался давно, но насколько помню там загрузка частей стандартная #3d13, напрямую сделано только отрубание magic кнопки.
Верно, в оригинальной версии от Cоdebasters. В моей версии дема полностью перепакована, пофиксена в плане мультиколора, вроде еще пофиксен 6-й бит, чтобы правильно через полупорт странички щелкались в части с кубом + добавлен турбо-загрузчик. Чей именно косяк (эмулятора или кода загрузчика) в не совсем хорошей работы turbo loader-а я сейчас не скажу, но на моем реальном скорпе всё работало без проблем. Бегло посмотрев код предположил, что зависание связано с тем, что после загрузки очередной части загрузчик тормозит диск (гасит лампочку), а потом при попытки загрузить следующую часть и происходит зависание на чтении порта #ff.
update: Сейчас проверил в Unreal, пропатчил загрузчик, чтобы не гасил движок дисковода - демо грузится и без No Delay.
Автору темы -- небольшое дополнение относительно кол-ва тактов в строке. Нисколько не удивлюсь, если есть или были машины и с 256 тактами на строку, о чем тут вроде никто не говорил. Соображения чисто практические: [почти] полностью используется частотный потенциал проца -- раз, можно немного упростить схему -- два, кадровую можно поднять до 57 Гц -- три (как следствие, имеем меньший фликкер, что всегда приятно). Пропорциональность изображения нарушится, это да, но в случае монитора или отдельного ТВ это непринципиально -- один раз отстроили и забыли про проблему.
Кроме того, 216 тактов могло быть и в несколько более изощренном, но опять-таки продиктованном реалиями случае: плавно регулируемый генклок (позволяет ловить макс частоту работы схемы при отладке), а для генерирования растра -- кварц от копеечной китайской монтаны, которую еще в конце 80ых можно было найти в любой деревне (строчная в <5% от стандарта). Синхронизация через счетчик числа тактов в строке, при 216 проц пашет на 3.55 (или выше).
Нужно no-delay включить, загрузчик к эмуляции вг-шки привередливый
Сейчас более досконально проанализировал работу загрузчика. В общем, в процедуре гашения лампочки дисковода (торможение диска) используется вот такой вот алгоритм:
xor a - гасим лампочку, bit 3 загрузки головки выставляем в 0
out (#1f),a
ld a,#d0 - принудительно прерываем выполнение команды
out (#1f),a
ret
Далее, когда загрузчик пытается загрузить новую часть демо, то turbo loader виснет на процедуре #3fe5 при чтении порта #ff в ожидании сигнала intrq, судя по всему. Вроде бы так. Это актуально для эмулятора Unreal, но, судя по всему и для ZXMAK2 тоже.
Faster, а команду восстановление Турболоадер отсылает?
Faster, а команду восстановление Турболоадер отсылает?
Нет, не отсылает. Турболоадер стандартный: использует команду позиционирования (поиска дорожки), после чего читает сектор ну и тд. Почему в эмуле "головка дисковода" срывается как бешенная (на 0 трек?) я не понимаю пока.
это я понимаю. Тут важен сам факт, что эмуль висит при переходе в ТРДОС, даже без образа диЦкеты. Или мы разные эмуули запускаем, вот в чОм вопрос....
при переходе в трдос у скорпиона несколько необычная процедура для вг93 выполняется, без задержек (nodelay) она зависает...
---------- Post added at 23:30 ---------- Previous post was at 23:26 ----------
Сейчас более досконально проанализировал работу загрузчика. В общем, в процедуре гашения лампочки дисковода (торможение диска) используется вот такой вот алгоритм:
xor a - гасим лампочку, bit 3 загрузки головки выставляем в 0
out (#1f),a
ld a,#d0 - принудительно прерываем выполнение команды
out (#1f),a
ret
Далее, когда загрузчик пытается загрузить новую часть демо, то turbo loader виснет на процедуре #3fe5 при чтении порта #ff в ожидании сигнала intrq, судя по всему. Вроде бы так. Это актуально для эмулятора Unreal, но, судя по всему и для ZXMAK2 тоже.
скорей всего загрузчик расчитывает на приход прерывания индексного отверстия, т.к. после отключения мотора диск все-еще крутится по инерции. нужно проверить, но похоже в эмуляторе вг93 эта инерция при отключении двигателя не предусмотрена и получается что индексное прерывание после отключения двигателя уже никогда не приходит...
introspec
11.04.2013, 01:20
Автору темы -- небольшое дополнение относительно кол-ва тактов в строке. Нисколько не удивлюсь, если есть или были машины и с 256 тактами на строку, о чем тут вроде никто не говорил.
Ну это просто максимализм у вас. Или всё или ничего. Я не настолько амбициозен, чтобы охватить "всё", включая самопальный клон клона Балтика, выпиленный лобзиком из металлолома в Урюпинске. Меня вполне устроил бы охват, скажем, 70-80 процентов парка машин.
Насколько я знаю, в данный момент не существует ни одной программы с мультиколором, которая работала бы на всех официальных версиях спектрума (48, 128, +2/+3), плюс, работала бы на основных клонах (в моём представлении, это - пентагон, профи, атм и скорпион). Программа, которая сможет работать с этим набором, будет, в моём представлении, решать эту задачу.
---------- Post added at 22:20 ---------- Previous post was at 22:19 ----------
скорей всего загрузчик расчитывает на приход прерывания индексного отверстия, т.к. после отключения мотора диск все-еще крутится по инерции. нужно проверить, но похоже в эмуляторе вг93 эта инерция при отключении двигателя не предусмотрена и получается что индексное прерывание после отключения двигателя уже никогда не приходит...
Ёлки-палки, до чего же здорово! :)
скорей всего загрузчик расчитывает на приход прерывания индексного отверстия, т.к. после отключения мотора диск все-еще крутится по инерции. нужно проверить, но похоже в эмуляторе вг93 эта инерция при отключении двигателя не предусмотрена и получается что индексное прерывание после отключения двигателя уже никогда не приходит...
Нее, дело не в этом. Сейчас проверил работу загрузчика в разных вариантах:
xor a
out (#1f),a
ret
т.е. убрал команду прерывания выполнения команды. Turboloader работает нормально, только с какого-то фига "головка дисковода" таки лезет на 0 трек (с чего бы?) при выполнении первой команды связанной с портом ВГ-шки, в данном случае out (#7f),track. Но далее командой "позиционирование" возвращается на нужный трек и все ок.
Здесь я несколько изменил процедуру, добавив ожидание выполнения команды:
xor a
out (#1f),a
#3fe5 in a,(#ff) - происходит позиционирование на 0 трек (с чего бы?)
and #c0
jr z,#3fe5
ret m
Собственно, дальше turboloader также работает нормально, возвращая "головку дисковода" на нужное место командой "позиционирование".
В связи с этим возникает вопрос: каким образом происходит эмуляция команды "восстановление" при условии того, что bit 3 (загрузка головки) в 0? На реале, чтобы диск раскрутился этот бит всегда должен быть в 1, собственно этим нулевым битом и происходит торможение и гашение лампочки. Следующий вопрос: что происходит в эмуляции ВГ-шки, после выполнения команды "прерывание выполнения предыдущей команды"? Что там с сигналами intrq и drq? Почему после выполнения последовательности
xor a
out (#1f),a
ld a,#d0
out (#1f),a
приходит "капец"?
Ёлки-палки, до чего же здорово! :)
Чего же тут здорового? )) Это наоборот печаль.
Ну это просто максимализм у вас. Или всё или ничего. Я не настолько амбициозен, чтобы охватить "всё", включая самопальный клон клона Балтика, выпиленный лобзиком из металлолома в Урюпинске. Меня вполне устроил бы охват, скажем, 70-80 процентов парка машин.
Насколько я знаю, в данный момент не существует ни одной программы с мультиколором, которая работала бы на всех официальных версиях спектрума (48, 128, +2/+3), плюс, работала бы на основных клонах (в моём представлении, это - пентагон, профи, атм и скорпион). Программа, которая сможет работать с этим набором, будет, в моём представлении, решать эту задачу.
Если под основными клонами вы имеете в виду то же самое, что и ранее в обсуждении ("тиражные машины") -- то я убежден, что это не пентагон, профи, атм и скорпион, к тому же в точности соответствующие некому эталону. Это машины на схемах второго поколения (скажем так) -- уже экономичные (40-50 корпусов), но еще без наворотов. Именно они разошлись по всей стране гигантским тиражом в виде самоделок и изделий разных кооперативов и МП (вполне возможно речь идет о миллионах экземпляров).
Просто от того, что вы по каким-то непонятным причинам не верите в существование машин с 216 или 256 тактами в строке (http://zx.pk.ru/showpost.php?p=589535&postcount=13) они не перестают существовать. Наверняка были/есть машины с хорошо реализованной кадровой 60 Гц -- там тактов в строке может быть еще больше.
Turboloader работает нормально, только с какого-то фига "головка дисковода" таки лезет на 0 трек (с чего бы?)
А разве не должна?
Команда "восстановление" осуществляет позиционирование на дорожку 0. Если через 256 шагов сигнал TR00 не появится, то команда перкращает работу.
А разве не должна?
Не должна! Т.к. bit 3 нулевой. На этом и построена процедура гашения лампочки дисковода/торможение диска.
Восстановление 0000hvxx - команда восстановления используется для инициализации микросхемы КР1818ВГ93, обеспечивая установку магнитной головки выбранного дисковода в исходное состояние (на нулевую дорожку). Команда имеет следующие параметры:
h - бит определяет положение магнитной головки дисковода во время выполнения команды. Если он обнулен, то головка поднята, если установлен - находится в рабочем положении (опущена на дискету). Следует учитывать, что при h=0, контроллер не выдает сигнал на включение двигателя дисковода.
Источник: А. Ларченко, Н. Родионов. "ZX-Spectrum & TR-DOS Для пользователей и программистов", с.203
Это дисковод не включается, а ВГ93 команду выполняет. Выдает 256 импульсов "шаг".
introspec
11.04.2013, 23:56
Если под основными клонами вы имеете в виду то же самое, что и ранее в обсуждении ("тиражные машины") -- то я убежден, что это не пентагон, профи, атм и скорпион, к тому же в точности соответствующие некому эталону.
Возражение очень серьёзное, я сам много лет сидел на Дельте-С.
К сожалению, наш разговор, в целом, беспредметный. Если у меня получится доделать мой софт - будем говорить предметно. Если не получится - ну, тоже всё понятно будет. Так, наверное, проще и честнее.
http://i230.photobucket.com/albums/ee81/ex0l0n/zx256screen.jpg
попробую объяснить словами.
жёлтая полоса идёт 8?пикс. до экрана и 104 дальше.
её высота сбоку экрана 6пикс.
квадраты получаются шириной 24, высотой 23
в ширину у меня экран целиком на монитор не влазит, но я могу его двигать.
4t у Скорпиона. Бордюр на КП13 сделан. И на картинке видно, что бордюр точно на границе знакоместа меняется.
Слева изображение реального Scorpion ZS 256 Turbo+, справа изображение Unreal в режиме Scorpion ZS 256 Turbo+. Тайминги идентичны! :) п.с. в ZXMAK2 надо учесть 4T!
Возражение очень серьёзное, я сам много лет сидел на Дельте-С.
К сожалению, наш разговор, в целом, беспредметный. Если у меня получится доделать мой софт - будем говорить предметно. Если не получится - ну, тоже всё понятно будет. Так, наверное, проще и честнее.
Я поправляю ваши заблуждения (тактов/строку, тиражные машины и пр.), да и лишь по той причине, что вы вроде серьезно настроены сделать что-то действительно сложное и оригинальное.
Не знаю, прислушиваетесь ли вы к советам со стороны... Попробую предложить вам ставить перед собой реальные цели (см. Alex-DJ, Aleksei1983, e2e4).
Слева изображение реального Scorpion ZS 256 Turbo+, справа изображение Unreal в режиме Scorpion ZS 256 Turbo+. Тайминги идентичны!
под эмулем жёлтая полоса в верхнем левом углу похоже перекрывает ноль полностью,то-есть на 8пикс ?
Слева изображение реального Scorpion ZS 256 Turbo+, справа изображение Unreal в режиме Scorpion ZS 256 Turbo+. Тайминги идентичны! :) п.с. в ZXMAK2 надо учесть 4T!
что-то я не понял что именно нужно учесть, 4T бордюр там изначально был. Картинка в ZXMAK2 2.7.22 (который я выкладывал позавчера) вроде как полностью совпадает с разверткой на фотке goodboy.
сомнение разве что может быть в вертикальном смещении +- 1 пиксел, т.к. фотка немного размытая - не видно где горизонтальные линии на бордюре пересекаются с клетками на папире. Судя по эмулятору - по левому краю между нижними клетками 7 и 8 (на бордюре - зеленый и циан).
Еще может быть неточность +-2 такта в моменте захвата бордюрного колора, т.к. по mctest2 это не увидишь...
Вот ZXMAK2:
http://savepic.ru/4441143.png
---------- Post added 13.04.2013 at 00:23 ---------- Previous post was 12.04.2013 at 23:58 ----------
под эмулем жёлтая полоса в верхнем левом углу похоже перекрывает ноль полностью,то-есть на 8пикс ?
все, понял в чем дело, в mctest2 почему-то выравнивание на 0-й такт не работает, поэтому при запуске как повезет - начальный такт может быть от 0 до 3. Сейчас в эмуляторе при начальном такте 2 или 3 изображение смещается относительно фотки реального скорпа.
Нужно попробовать запустить тест на риале несколько раз - появится ли смещение?
Нужно попробовать запустить тест на риале несколько раз - появится ли смещение?
хорошо, на днях попробую.
...........................................
запустил тест много раз. высота жёлтой полосы сбоку всегда была 6пикс, но несколько раз она была смещена на 8пикс вправо.
95%
http://i230.photobucket.com/albums/ee81/ex0l0n/zx256screen.jpg
5%
http://i230.photobucket.com/albums/ee81/ex0l0n/zs256screen2.jpg
introspec
02.09.2013, 02:27
Я написал новый код, который должен бы по идее работать сразу и на жёлтых, и на зелёных скорпионах. К сожалению, эмуляторы здорово путаются в показаниях относительно точных времянок скорпионов.
Если конкретнее, горизонтально, экран жёлтого скорпиона по версии ZXMAK2 и Unreal начинается примерно на 2 знакоместа раньше, чем думаeт Spectaculator (хотя предсказания ZXMAK2 и Unreal для жёлтых скорпионов совпадают до такта!). Зелёный скорпион не поддержан нигде кроме как в ZXMAK2, но он тоже выдаёт картинку на бордере, не выровненную по знакоместам с картинкой на основном экране, что выглядит как минимум подозрительно.
Было бы здорово, если бы кто-то из владельцев скорпионов смог попробовать запустить тестовую версию моей новой программы на реале (см. приложение). Заодно, можно попробовать поймать последние несколько тактов для повышения точности эмуляторов.
Было бы здорово, если бы кто-то из владельцев скорпионов смог попробовать запустить тестовую версию моей новой программы на реале
Что такое "... magic code: #1302" ?:confused:
Upd
69888/1083/4t
69886/866/5t или 69891/867/5t
69888/722/6t
224t per screen line
Это что же получается?? Совсем неправильные времянки скорпиона?) Если строк увеличить - то хоть немного будет на "зеленый" похож?
introspec
11.03.2014, 00:21
Что такое "... magic code: #1302" ?:confused:
Upd
69888/1083/4t
69886/866/5t или 69891/867/5t
69888/722/6t
224t per screen line
Это что же получается?? Совсем неправильные времянки скорпиона?) Если строк увеличить - то хоть немного будет на "зеленый" похож?
magic code: #1302 - это информация для меня, чтобы можно было воспроизвести поведение вашей машины в эмуляторе. К сожалению, ваша машина - нестандартная. У неё число тактов на фрейм - как у жёлтого скорпиона, но при этом - нет задержек М1. Где у неё начинается экран - нужно исследовать отдельно. Если вам интересно, я могу сделать сборку под вашу машину и в ней можно будет подобрать правильные параметры кадра в Unreal. Но, к сожалению, т.к. машина, видимо, "нестандартная", добавить я её в свой просмотрщик скорее всего не смогу :(
Стандартная машина выйдет если добавить задежки М1 (=жёлтый скорпион) или добавить 4 строки к изображению (=зелёный скорпион). Второй вариант, мне кажется, более прогрессивен. Но при этом, скорее всего, придётся также корректировать момент начала отрисовки экрана.
Стандартная машина выйдет если добавить задежки М1 (=жёлтый скорпион) или добавить 4 строки к изображению (=зелёный скорпион).
Да, вот именно я так и сделал. Добавил 4 строки.. Теперь Int отлавливаю(((
Он приблизительно так же расположен, как и в 48-м ??
Добавить задежки М1 (=жёлтый скорпион) было бы интереснее, но для меня это сложнее...
introspec
11.03.2014, 00:43
Да, вот именно я так и сделал. Добавил 4 строки.. Теперь Int отлавливаю(((
Он приблизительно так же расположен, как и в 48-м ??По идее, раз общее число тактов сейчас соответствует зелёному скорпиону, мой просмотрщик бордера должен бы показывать картинку - можно примерно настроиться по ней. Общее число тактов до экрана там похоже на 48к, но до такта не совпадает (если верить эмуляторам во всяком случае).
Идеально настроиться только по старой программе не выйдет, т.к. на скорпионе бордер округляется до 4 тактов. Но, по идее, ZXMAK2 уже настраивали под зелёный скорпион, так что есть надежда на то, что как минимум моя программа верна, и если сделать несколько версий программы, с поддержкой "крайних" разрешённых значений, можно подстроить ваш компьютер до такта.
---------- Post added at 20:43 ---------- Previous post was at 20:41 ----------
Добавить задежки М1 (=жёлтый скорпион) было бы интереснее, но для меня это сложнее...Как программист, заклинаю: чем скорее вымрут машины с М1, тем легче будет жить прогрессивному человечеству! :)
Да нет, не "теоретически". Может вы просто не застали времена, когда проблемой было абсолютно все, включая кварцы. Ставили то, что было. Не было никакого кварца -- паяли LC-контур. В указанной ситуации 216 тактов на строку получится и у самых тиражных машин, включая простейшие самоделки.
А стоит ли? Неужели вы на самом деле считаете, что сейчас это актуально? Просто, может быть, имеет смысл сделать хоть что-то для одной платформы, чем не сделать ничего для многих?
Я мало сделал для ZX к своему стыду... Я распылился по платформам:v2_dizzy_step:...
Было бы здорово, если бы кто-то из владельцев скорпионов смог попробовать запустить тестовую версию моей новой программы на реале
проверил на `зелёном` - вроде отображается корректно
introspec
12.03.2014, 16:11
проверил на `зелёном` - вроде отображается корректноУра, это совершенно здорово на самом деле! Получается, что мы сначала настроили ZXMAK2, потом я настроил свою программу по эмулятору и вот теперь мы подтвердили верность этой настройки на реале. :)
introspec
12.03.2014, 19:37
Угу. все равно строить больше не по чем тайминги))
По твоей тестовой программе настроил эмуль Xpeccy, ну и Speccy2010 то жи перестроил под "зеленый" при эмууляции скорпиона. Зачем - не знаю :)
Обратный отсчет какой то, на...
Кстати, на "желтом" скорпе тоже должна работать?? Кто бы еще проверил..
Исходники сильно секретные?)) А то в одном эмуле работает неправильно))
На жёлтом скорпе работать должно по идее, но т.к. эмуляторы путаются в показаниях, я не вполне уверен, насколько "надёжна" моя подстройка. Лично я отлаживаю жёлтые скорпионы на Unreal и зелёные - на ZKMAK2. Что эмулируют остальные эмуляторы сказать сложно, т.к. чаще всего там бывает реализована какая-то гремучая смесь из обоих :)
Мои исходники не секретные, они просто недоделанные. Я работаю над неким "универсальным" просмотрщиком бордерной графики, который бы позволил художникам публиковать свои работы. Прошлой осенью было написано несколько версий просмотрщика, каждый со своими преимуществами и недостатками. Я сейчас в процессе некой унификации, которая позволит этим разным версиям полагаться на одно общее ядро идентификации железа, после чего все исходники будут опубликованы. Точнее, сейчас я очень занят и почти ничего не пишу, но обязательно вернусь к этой теме весной.
Я работаю над неким "универсальным" просмотрщиком бордерной графики,
а у такой графики похоже корни растут с коммодора.
я тут недавно увидел в одной демке картинку (кажется девушка на фоне моря)
introspec
12.03.2014, 20:35
а у такой графики похоже корни растут с коммодора.
я тут недавно увидел в одной демке картинку (кажется девушка на фоне моря)
За последнее полгода у меня сложилось чёткое ощущение, что в плане "исполняемой" графики мы здорово отстаём, как от Atari так и от Commodore C64. Будем навёрстывать! Понемногу уже наверстываем, собственно: http://zxart.ee/eng/graphics/authors/d/diver/rear-window/
я тут недавно увидел в одной демке картинку (кажется девушка на фоне моря)
Эта? https://www.youtube.com/watch?feature=player_detailpage&v=ZsRRCnque2E#t=3010
На Унриле попробовал с настройками зелёного турбо скорпиона:
PRESET.SCORPION_TURBO+=70784,14344,224,50,32,0,1,0 ,0,1
Картинка правильная.
С настройками жёлтого:
PRESET.SCORPION=69888,14344,224,50,32,1,1,0,0,1
Картинка ломается.
Так что или на жёлтом она не должна работать, либо в Унриле настройки неверные.
introspec
12.03.2014, 20:57
На Унриле попробовал с настройками зелёного турбо скорпиона:
PRESET.SCORPION_TURBO+=70784,14344,224,50,32,0,1,0 ,0,1
Картинка правильная.
С настройками жёлтого:
PRESET.SCORPION=69888,14344,224,50,32,1,1,0,0,1
Картинка ломается.
Так что или на жёлтом она не должна работать, либо в Унриле настройки неверные.
У меня - работает, именно с этими настройками. Вы не забыли поставить верную ПЗУ? В старых бетах я смотрел на ПЗУ чтобы отличать скорпионы от чего-то ещё. К сожалению, с тех пор, как выложил эту бету прошло немало месяцев, точно сейчас я не вспомню. Но я сейчас поставил в Unreal скорпионовское ПЗУ и эти же самые времянки и получил верный рисунок.
Интересно. Попробовал менять ПЗУ на классическое 2.95 и всё работает. Вот уж не подумал бы, что ПЗУ влияет на мультиколоры.
introspec
12.03.2014, 21:55
Интересно. Попробовал менять ПЗУ на классическое 2.95 и всё работает. Вот уж не подумал бы, что ПЗУ влияет на мультиколоры.
ПЗУ влияет на детект модели. Детект неидеальный. Основная работа в этом просмотрщике - как раз над детектом. Всю классику я давно научился определять без ПЗУ, но вот с отечественными клонами есть несколько засад. Например, как отличить Scorpion от KAY, не глядя на ПЗУ. Именно поэтому я и переписываю просмотрщик; я не вполне доволен детектом в старой версии программы.
Эта?
ага, только я название демки уже забыл
introspec
12.03.2014, 23:48
Deathsoft любезно согласился прогнать мой код на жёлтом скорпионе; прикладываю его скриншот. Как вы видите, оба скорпиона эмулируются Unreal без каких-либо проблем.
прикладываю его скриншот
я сначала хотел тоже сделать нормальный скриншот, но куда-то запрятал твтюнер с захватом картинки через композит
introspec
13.03.2014, 00:24
я сначала хотел тоже сделать нормальный скриншот, но куда-то запрятал твтюнер с захватом картинки через композит
goodboy, да ладно, форум всё равно перекодирует картинки в тихий ужас. Самое главное, мы убедились, что оба скорпиона сейчас эмулируются в Unreal до такта.
denpopov
13.03.2014, 13:55
а насколько этот документ достоверен?
http://www.worldofspectrum.org/rusfaq/
introspec
13.03.2014, 17:27
а насколько этот документ достоверен?
http://www.worldofspectrum.org/rusfaq/
Плюс-минус нормально там всё.
introspec
15.03.2014, 12:44
Ну плюс\минус - это же геометрия экрана only "желтого" скорпиона, с M1 ?
На зелененьком - несколько иначе в +\-?? особенно int ?
Ну там FAQ гораздо более поверхностное, там и для жёлтого скорпиона деталей совершенно недостаточно для реальной работы. Но на том уровне детализации, что в остальных частях этого FAQ, по-моему, разумно.
Запустил сейчас тест на железном сокрпионе1024. Почему-то бордюр не чёрный, а белый. Ну и при включенной турбе тест зацикливается на определении модели. Как отключаешь, так правильно определяет модель.
Почему-то бордюр не чёрный, а белый.
проц галимый.
а если серъёзно неправильно выполняется (недокументированная) команда out (c),0
Очередное подтверждение, что недокументированные команды не обязаны выполняться так, как от них ожидают.
introspec
25.03.2014, 23:11
Запустил сейчас тест на железном сокрпионе1024. Почему-то бордюр не чёрный, а белый. Ну и при включенной турбе тест зацикливается на определении модели. Как отключаешь, так правильно определяет модель.
Зависание - да, эта проблема уже исправлена в новых версиях. Белый бордюр означает, что у вас CMOS процессор, который почему-то не был распознан (нужно будет перепроверить мой тест платформы). Муз. процессор на этой машине есть?
---------- Post added at 19:11 ---------- Previous post was at 19:10 ----------
Очередное подтверждение, что недокументированные команды не обязаны выполняться так, как от них ожидают.Тест процессора там есть, который на машинах с муз. процессором должен работать достаточно надёжно. Видимо, у меня там в скорпионах есть какой-то неотловленный баг.
Процессор да, CMOS на 20МГц.
У меня TSFM, правда на момент теста он был отключен.
introspec
25.03.2014, 23:36
Процессор да, CMOS на 20МГц.
У меня TSFM, правда на момент теста он был отключен.
Отключён в каком смысле? Как если бы не было AY совсем или просто дополнительные фичи отключены? Было бы интересно, если бы вы могли прогнать тест с подключённой TSFM - у меня не было возможности протестировать такую конфигурацию.
ТСФМ отключен физически, т.е. программа видит, что муз. процессор отсутствует. При этом мультиколор держится правильно при отключенной турбе и с белым бордюром, клавиатура подключена через ZX-MC2 и на него не влияет.
при подключенном ТСФМ бордюр чёрный, НО мультиколор не держится (мельтешит) независимо от турбы. При отключении ZX-MC2 (кнопкой ScrollLock) мультиколор встаёт правильно при отключенной турбе и неправильно статично при включенной.
introspec
26.03.2014, 00:15
при подключенном ТСФМ бордюр чёрный, НО мультиколор не держится (мельтешит) независимо от турбы. При отключении ZX-MC2 (кнопкой ScrollLock) мультиколор встаёт правильно при отключенной турбе и неправильно статично при включенной.
Интересный у вас зоопарк железа. Что такое ZX-MC2? :)
Мне трудно предсказать как могут срабатывать произвольные сочетания неизвестных компонентов, поскольку код для такого рода графики должен быть выравнен до такта. Без AY(TSFM) программа не понимает, что имеет дело со CMOS процессором и предполагает, по умолчанию, что процессор NMOS. Почему ZX-MC2 влияет на работоспособность программы я не понимаю. Это может быть багом, а может быть и связано с какими-то непредусмотренными мной взаимодействиями между вашими расширениями.
Могу гарантировать одну вещь: в турбо режиме эта программа никогда работать не будет :)
SoftFelix
26.03.2014, 00:25
introspec, запустил на KAY-2010. На бордере нет ничего, он всегда чёрный. Проц стоИт CMOS-овский на 20МГц. Magic code: #1342.
Почему ZX-MC2 влияет на работоспособность программы я не понимаю.
Имхо, потому, что она /WAIT генерИт.
introspec
26.03.2014, 00:35
introspec, запустил на KAY-2010. На бордере нет ничего, он всегда чёрный. Проц стоИт CMOS-овский на 20МГц. Magic code: #1342.
Имхо, потому, что она /WAIT генерИт.KAY у меня в этой бете не поддержан. Надеюсь добавить поддержку в окончательном релизе (большое спасибо за "волшебное число" :) ).
/WAIT объяснял бы срыв синхронизации, но тогда непонятно, почему при отсутствии TSFM не генерируются /WAIT...
A-A-A! Я знаю почему! Потому что в режиме NMOS программа не пишет в порт #FE, а пишет в совсем другой порт и избегает таким образом конфликта с ZX-MC2. Тогда диагноз такой: поддержать вейты ZX-MC2 я не смогу; видимо, единственная "надёжная" комбинация с ZX-MC2 - это ZX-MC2 + NMOS процессор.
Интересный у вас зоопарк железа. Что такое ZX-MC2?
Мультикарта контроллер клавиатуры-мышки-RS232 zx.pk.ru/showthread.php?t=609 (zx.pk.ru/showthread.php?t=609)
Alex Rider
26.03.2014, 23:10
А подскажите убогому откуда разница в тактах у CMOS и NMOS-процессоров?
introspec
26.03.2014, 23:11
А подскажите убогому откуда разница в тактах у CMOS и NMOS-процессоров?
Разница не в тактах, а в разном функционале команды out (c), 0 (на CMOS вместо 0 получается 255).
Alex Rider
26.03.2014, 23:17
Разница не в тактах, а в разном функционале команды out (c), 0 (на CMOS вместо 0 получается 255).
А... Я думал, геометрия картинки у вас разная получается...
introspec
26.03.2014, 23:20
А... Я думал, геометрия картинки у вас разная получается...
Если интересно, почему было сделано именно так, читай вот этот тред: http://forum.tslabs.info/viewtopic.php?f=4&t=247
SoftFelix
26.03.2014, 23:21
на CMOS вместо 0 получается 255
Интересно, а почему тогда у меня на КАЕ с CMOS-процом бордер всегда чёрный?
introspec
26.03.2014, 23:23
Интересно, а почему тогда у меня на КАЕ с CMOS-процом бордер всегда чёрный?
Он просто не распознаёт модель компьютера и отрубает бордер к чёрту.
---------- Post added at 19:23 ---------- Previous post was at 19:22 ----------
Там приходится сочетать не одно, а несколько различных требований, компромисс немного нетривиальный. Мой личный вклад в мировую историю *****кода.
Сейчас более досконально проанализировал работу загрузчика. В общем, в процедуре гашения лампочки дисковода (торможение диска) используется вот такой вот алгоритм:
xor a - гасим лампочку, bit 3 загрузки головки выставляем в 0
out (#1f),a
ld a,#d0 - принудительно прерываем выполнение команды
out (#1f),a
ret
Далее, когда загрузчик пытается загрузить новую часть демо, то turbo loader виснет на процедуре #3fe5 при чтении порта #ff в ожидании сигнала intrq, судя по всему.
А можно поподробнее как это обрабатывает реальная вг93? Зачем тут принудительное прерывание?
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot