User Tag List

Показано с 1 по 10 из 97

Тема: Точное описание задержек Скорпиона

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Member Аватар для Faster
    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала обозначу, что было 3 версии Scorpion'a:

    1. Scorpion ZS 256 (желтая плата)
    2. Scorpion ZS 256 Turbo (желтая плата, добавлен турбо режим)
    3. Scorpion ZS 256 Turbo+ (зеленая плата, несколько увеличен период кадровой развертки, и как следствие , те, в основном музыкально-демонстрационные программы, которые не “помещались “ в промежуток между двумя INT-ами, и поэтому работавшие в 2 раза медленнее, теперь работают как положено, сигнал INT формируется цифровым способом , его длительность жестко задана и равна 9mks, причем сделано так, что в программах, чувствительных к длительности сигнала INT и ранее работавших неправильно в режиме Turbo из-за повторного захвата прерывания, теперь этого не происходит. Во всех других моделях ”компьютеров, которые мы выбираем”, этот дефект, по нашим сведениям, присутствует (Источник).

    Цитата Сообщение от introspec Посмотреть сообщение
    О, это здорово, что разговор зашёл про жёлтые/зелёные платы. Дело в том, что тайминги Скорпиона по версии Unreal или Spectacular отличаются от таймингов Скорпиона по версии EmuZWin. Либо кто-то из них не прав, либо они имели в виду разные скорпионы! Вы случайно не в курсе, какие из вариантов Скорпиона подразумевают эти эмуляторы?
    Везде эмулируется Scorpion ZS 256 (Желтый), что за тайминги в EmuZWin я не знаю. По дефолту считаю, что правильные тайминги в Unreal.

    Цитата Сообщение от introspec
    Я посмотрел мультиколор в 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 строках они показывают уже отличные значения от реального зеленого скорпиона.

    Цитата Сообщение от introspec
    Загрузить демку в EmuZWin я не смог.
    Я загрузил, мультиколорная часть там не правильно работает.

    Цитата Сообщение от introspec
    Кто-нибудь видел это дело на реале? насколько хорошо она работает?
    Например я видел, ибо фиксил демо на реальном зеленом скорпионе. Все работает ок!

    Цитата Сообщение от introspec
    Следует ли это понимать так, что Unreal и Spectacular эмулируют "жёлтую" плату, а EmuZWin, если бы заработал, работал бы как "зелёная" плата?
    Нет, зеленую плату, по дефолту, не эмулирует ни один из видимых мною эмулей, в том числе и ZXMAK2.

    Цитата Сообщение от introspec
    Я сохранил нужный эффект из 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+прерывания мы оказываемся на нечётном номере такта, т.е. всегда добавляем один такт задержки к последующей команде.
    Насчет таймингов я уже отписался выше.
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Faster Посмотреть сообщение
    В принципе, можно в дефолтном пресете на Scorpion ZS 256 просто убрать галочку с Even M1 - мультиколорная часть также будет работать. Но на данный момент, я пока придерживаюсь мнения, что количество строк в зеленом скорпионе все же 316, т.к. при таком раскладе все тесты на INT, типа Jemmini Commander, в демке Action и тп. показывают те же результаты, что и на реальном зеленом скорпионе. А при 312 строках они показывают уже отличные значения от реального зеленого скорпиона.
    Большое спасибо за очень ценную информацию. Не хочу показаться совсем навязчивым, но у вас прозвучала небольшая неуверенность относительно кол-ва тактов в кадре (= числа строк на экране). Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
    Вложения Вложения

  4. #3
    Member Аватар для Faster
    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    Большое спасибо за очень ценную информацию. Не хочу показаться совсем навязчивым, но у вас прозвучала небольшая неуверенность относительно кол-ва тактов в кадре (= числа строк на экране). Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
    Я бы рад помочь, но, к сожалению, у меня уже нет доступа реальному Scorpion'у. Но уверен, что среди посетителей данного форума найдется реальный зеленый скорпион, для теста!
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

  5. #4
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Faster Посмотреть сообщение
    Нет, зеленую плату, по дефолту, не эмулирует ни один из видимых мною эмулей, в том числе и ZXMAK2.
    ну это можно быстро исправить, а есть тайминги этой зеленой платы?

    ---------- Post added at 03:29 ---------- Previous post was at 03:27 ----------

    Цитата Сообщение от introspec Посмотреть сообщение
    Основная работа в данный момент - над кодами, которые могли бы максимально автоматизировать вычисление таймингов конкретного спектрума.
    посмотри тему про эмуляцию дельты в разделе эмуляторов, там мы вычисляли тайминги дельты, включая разные тестовые программки.

    ---------- Post added at 03:39 ---------- Previous post was at 03:29 ----------

    Цитата Сообщение от introspec Посмотреть сообщение
    Было бы совсем здорово, если бы вы у вас нашлась возможность как-нибудь запустить приложенную программу на реале - она должна точно измерять кол-во тактов в кадре и на вейтовых и на безвейтовых машинах. Интерфейса там пока нет никакого, но нужную информацию она выдаст.
    интересный тестик
    на чем основан принцип измерения?

    PS: на будующее просьба выкладывать файлы в ZIP... Люблю перетаскивать ссылки на архивы из браузера в окно своего эмулятора, но поддержки RAR в нем пока нет, т.к. сложно найти opensource код для RAR распаковщика. Поэтому приходится сохранять, распаковывать и только затем открывать...
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  6. #5
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alexander Makeev Посмотреть сообщение
    интересный тестик
    на чем основан принцип измерения?

    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 ----------

    Цитата Сообщение от goodboy Посмотреть сообщение
    проверил на `зелёном` скорпе
    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. К сожалению, достигнутая там точность реально нетривиальная, пусть и подогранная к конкретной машине.

    => КОНЕЦ

    Цитата Сообщение от goodboy Посмотреть сообщение
    советую посмотреть (если ещё не видел) игрушку BuzzSaw и демо RiverRaid
    Смешно, я как раз с этого и начал. Сначала я хотел делать нормальный клон River Raid, потом увидел демо, потом посмотрел BuzzSaw и понял, что сейчас самые интересные продвижения идут в мультиколоре. Но мультиколор в этих двух программах не очень гибкий, просто заточен под западные спектрумы.

    ---------- Post added at 14:38 ---------- Previous post was at 14:31 ----------

    Цитата Сообщение от AM Посмотреть сообщение
    А стоит ли? Неужели вы на самом деле считаете, что сейчас это актуально? Просто, может быть, имеет смысл сделать хоть что-то для одной платформы, чем не сделать ничего для многих?
    Я бы сказал сильнее: любое программирование для спектрума сейчас неактуально. Я поставил себе конкретное тех. задание, которое представляет интересный challange (для меня). У меня нет задачи сделать что-то конкретное, мне просто хочется получать удовольствие от процесса.

    Если в процессе моего получения удовольствия, получится что-то интересное и/или полезное другим - замечательно. Если нет - не проблема. Но если я перестану получать удовольствие от процесса, ничего хорошего точно не получится.

    ---------- Post added at 15:24 ---------- Previous post was at 14:38 ----------

    Цитата Сообщение от Faster Посмотреть сообщение
    ...подтверждаются мои данные, что Scorpion ZS 256 Turbo+ имеет 224 такта х 316 строк = 70784 такта, плюс не активный Even M1.
    Совершенно верно, я согласен, хотя и сомневался немного (это был первый раз когда я видел такую цифру для числа тактов где-либо!). Самое обидное, что мой старый скорпион, купленный в 1996 году, был, почти наверняка, как раз зелёным, но в то время, когда он у меня ещё был, я не оценил по-настоящему его времянку с т.зр. совместимости с 48к спектрумом.
    Последний раз редактировалось introspec; 08.04.2013 в 17:40.

  7. #6
    Member Аватар для Faster
    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    ВНИМАНИЕ РАЗРАБОТЧИКАМ ЭМУЛЯТОРОВ =>

    У "зелёного" скорпиона (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 - Multicolor + Digital music
    Action - Программный Turbo-режим.
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

  8. #7
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Faster Посмотреть сообщение
    правильно, на данный момент, ни в одном эмуляторе, но заточенные под Scorpion ZS 256 Turbo+:
    Satisfaction - Multicolor + Digital music
    Action - Программный Turbo-режим.
    добавил ULA Scorpion [Green] в ZXMAK2 2721
    по горизонтали тайминги могут быть смещены, т.к. не чем проверить, в демке satisfaction только построчный мультиколор
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  9. #8
    Member Аватар для Faster
    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alexander Makeev Посмотреть сообщение
    добавил ULA Scorpion [Green] в ZXMAK2 2721
    по горизонтали тайминги могут быть смещены, т.к. не чем проверить, в демке satisfaction только построчный мультиколор
    Эм, не работает мультиколорная часть в режиме Scorpion. Объясню почему:
    Цитата Сообщение от Faster
    правильно, на данный момент, ни в одном эмуляторе, но заточенные под 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).
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

  10. #9
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Faster Посмотреть сообщение
    Эм, не работает мультиколорная часть в режиме Scorpion. Объясню почему:

    Когда я говорил, что эти демки не работают ни в одном эмуляторе, я имел ввиду, что они не работают в режиме Scorpion, однако в режиме Pentagon они работают замечательно. Суть состоит в том, что при запуске загрузчика демки проверяется на каком компе она запущена и если это Pentagon, то стартует с дефолтными настройками, а если это Scorpion, то соответственно выставляются настройки для Scorpion'a. А ты, судя по всему, посчитал, что Satisfaction заточена только под Scorpion ZS 256 Turbo+ и получилось сейчас, что пресет ULA (Scorpion green) = ULA (Pentagon).
    да, точно, я тестил на пентагоне с юлой скорпиона В коде уже исправил, вечером релиз обновлю
    Последний раз редактировалось ZXMAK; 09.04.2013 в 12:12.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 30
    Последнее: 16.08.2011, 21:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •