Важная информация

User Tag List

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя
Показано с 111 по 120 из 136

Тема: HWYENC

  1. #111
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:39. Причина: Удаление в знак протеста против действий MM

  2. #112
    Junior
    Регистрация
    07.01.2016
    Адрес
    г. Москва
    Сообщений
    27
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Ну почему, если не привязываться к архитектуре, то выполнение только команд процессора сводится к использованию индексной адресации и последовательнстям действий типа:
    При портировании с Z80 несколько проблем:
    1) неоптимальный доступ к памяти, потому что на исходном процессоре адресация в основном байтовая или словная невыровненному адресу. Особенно это печально при байтовой записи в память: разработчики процессора ВМ2 решили не делать цикл DATAOB и MOVB вместо одного цикла доступа к шине делает два (DATAI - modify byte - DATAO). Накладные расходы при загрузке байта в регистр (знаковое расширение, что решается, например, комбинацией CLR Rn/BISB src, Rn). Тут же чтение/запись слова по невырвненному адресу (MOVB ea -> SWAB -> MOVB ea+1): особенно печальна запись -- из-за отсутствия DATAOB на шине будет четыре цикла вместо двух + плюс фетчинг и декодинг трёх-четырёх команд вместо одной.
    2) косвенная адресация при обращении к видеобуферу и такие же проблемы с байтовой адресацией.
    3) команды блочного копирования LDIR сотоварищи
    Z80 реально фетчит и декодирует каждый раз (пока BC != 0) LDIR и затем выполняет два шинных цикла, то есть LDIR выглядит для исполнительно устройства как (READ BUS <fetch LDIR>, <decode/exec LDIR>, READ BUS, WRITE BUS) x N.
    если заменять это просто на
    Код:
    MOVB (Rs)+, (Rd)+
    SOB Rc, . - 2
    то это будет неоптимально и с точки зрения доступа к памяти (отстутствие цикла DATAOB) и с точки зрения выполнения: каждый раз выполняется ещё и SOB, который по времени составляет приблизительно треть от MOVB. Тут поможет аккуратный loop unrolling и, если заведомо известно выравнивание адресов или возможность его изменить, замена MOVB на MOV.
    Например, тупое
    Код:
    ; Rc = Rc / 2
    1$: 
    MOVB (Rs)+, (Rd)+
    MOVB (Rs)+, (Rd)+
    SOB Rc, 1$
    Даст прирост процентов на 20 (в зависимости от ситуации). Если ещё на x2 unroll'ить, то ещё 10-15% можно отыграть, x8 unroll даст почти 1.5 раза прироста по сравнению с x1. А если есть возможность заменить на MOV (Rs)+, (Rd)+ то почти в два раза сразу.


    Никита проделал офигительный объём работы, стоит ему отлить памятник только потому, что оно вообще работает. Дело то за малым: берём исходники и модифицируем код, чтобы логика осталась прежней, а код был оптимален с точки зрения целевого процессора. =)

  3. #113
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Ну почему, если не привязываться к архитектуре, то выполнение только команд процессора сводится к использованию индексной адресации и последовательнстям действий типа:
    Нельзя не привязываться к архитектуре, если речь идет о конкретно эмуляции Z80 на PDP11.
    И она будет как минимум в 5-10 раз медленнее, чем реальный Z80.
    Если же делать рекомпиляцию, причем грамотную, то там можно добиться где-то 1/2 скорости Z80.
    Ну а потом если пройтись по этому ручками, то для некоторых игр можно и получить скорость аналогичную Z80.

  4. #114
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,182
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Никита, а вот демка демонстрирует кучу цветов (визуально даже больше 8). Она использует ПП?


    По поводу деревьев другого цвета. Где-то тут на форуме встречал высказывание hobot'а в таком духе, что 90% УКНЦ-шек имеют вывод GRB, около 3% RGB, остальные монохром (у нас в школе как раз были монохром). Думаю, хорошо было бы сделать в меню игры выбор GRB/RGB, притом GRB по умолчанию, как более часто встречающийся. Ну и цветные деревья. А ещё - стилизовать под Спектрум цвета в игровой статистике POWER/SCORE, TIME/HIGH. Думаю, 3-х цветов (жёлтый, красный, зелёный) для этого вполне достаточно, можно не выходить на ПП.

    (там не только деревья другим цветом, всё обстоит несколько сложнее, чем я думал)



    Ещё мечтаю, что когда-нить Никита выключит надпись ЛАТ на экране =) Ну, чтобы уж совсем!

  5. #115
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,062
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Никита, а вот демка демонстрирует кучу цветов (визуально даже больше 8). Она использует ПП?
    Если память мне не отказывает (укоризненно смотрю в ТО), то добраться до плана 0 из ЦП напрямую невозможно.

    Вообще на УКНЦ ограничение -- 8 цветов на одну строку, полный набор цветов намного больше, см. соответствующую тему.
    Реально же, во многих машинах даже 8 основных цветов сделаны неправильно, в значительной части перепутаны красный и зелёный.
    (И опять же, задать свой набор цветов в каждой строке можно только через ПП -- в его памяти лежит display list.)

    По этим причинам я принёс в жертву ту цветовую схему которая мне лично казалась красивой (зелёное игровое поле), чтобы на всех трёх вариантах машин (RGB, GRB, BW) смотрелось более-менее ОК.

    Думаю, хорошо было бы сделать в меню игры выбор GRB/RGB, притом GRB по умолчанию, как более часто встречающийся. Ну и цветные деревья.
    Это значит, что при выборе схемы нужно патчить код примерно в 5-6 местах.
    Можно, но не особо интересно.
    В целом, я уже потратил на этот проект времени минимум в 1,5 раза больше чем собирался, время кончилось.
    Код открыт, где лежит известно, любой может взять и доработать как хочется.

    - - - Updated - - -

    Цитата Сообщение от ilynxy Посмотреть сообщение
    При портировании с Z80 несколько проблем:
    Анализ очень правильный.
    Проблема скорости игры во многом это проблема байтовых обращений к памяти. Например:
    - Первый и второй "теневые" экраны разнесены друг от друга на нечётное количество байт. Поэтому копировать первый во второй пословно не получится.
    - Несколько словных значений в записях объектов выровнены по нечётному адресу -- запись и чтение вместо одной команды делаются за 4-5 команд.
    Также лучшей оптимизации можно достичь за счёт индексного доступа к полям объектов. Например, при анализе столкновений обращение к одной записи делается через IX+nn, а ко второй через HL -- и переведено на MACRO11 также, чтобы сделать нормально нужно ооочень аккуратно всё порефакторить.

  6. #116
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:39. Причина: Удаление в знак протеста против действий MM

  7. #117
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,062
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Всего 8 штатных цветов.
    Мы в общем тоже так думали. Тут на форуме есть утилита TSPAL.SAV от Titus.
    Но опять же, нельзя полагаться что на всех экземплярах УКНЦ это правильно распаяно, скорее всего нет.



    http://zx-pk.ru/threads/20686-mnogo-...na-uknts!.html -- тема про цвета

    http://zx-pk.ru/threads/20686-mnogo-...l=1#post570009 -- всего 53 уникальных цвета
    Последний раз редактировалось nzeemin; 24.01.2018 в 22:16.

  8. #118
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:39. Причина: Удаление в знак протеста против действий MM

  9. #119
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Да, я запускал это тест на всех своих исправных платах и часть из них показывает левую часть экрана в ч/б.
    И где скриншоты с этих нескольких плат?

  10. #120
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:39. Причина: Удаление в знак протеста против действий MM

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя

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

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

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

Ваши права

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