User Tag List

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

Тема: Секреты и трюки программирования (в том числе и игр) для РК-86

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #9

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy
    поставив 1F в самом их начале. Итого сэкономить 3*76 байт
    Насчёт 1F, сначала не понял, но после догадался, что это опечатка и имелcя ввиду код F1.

    Идею понял. На 5 невидимых строк можно потратить всего 5 байтов, ставя в начале этих строк код F1. А расчёт адресов начал строк тоже не усложнится, если считать (76D0+3 + N_строки * 73). 77 байтов экономим в 5-ти невлезающих по вертикали строках, что даёт дополнительные 385 байтов. Всего экономия составит 5*25 + 5*77= 510 байтов, что даёт 510:73= 6 строк, что и требовалось vinxru, чтобы иметь 36 строк. Но непонятно почему 36, ведь, чтобы частота кадров не менялась надо добавить 8 строк. Возможно он считал строки высотой в 10 линий, хотя в этом режиме они высотой всего в 8 линий растра. Так что 2-х строк всё-равно не хватает. Но можно эти две строки заглушить кодом F1 и тогда байтов хватает.

    Цитата Сообщение от SegaBoy
    Ну и если прибавлять дополнительные неиспользуемые строки, то поступать с ними так же
    Эту идею тоже понял. Но "глушить" имеет смысл только в самом низу экрана, т.е видимую строку 25, иначе, если заглушить строки 1...24, то позиции остальных строк, находящихся ниже заглушенной, сдвинутся и ориентироваться в позициях станет неудобно. Можно также заглушить байтом F1 первую отображаемую строку, увеличив при этом расчётный адрес первой видимой строки на 1.

    Например, глушим кодом F1 видимую строку 25, отчего выигрываем ещё 77 байтов. Итого выигрыш от кода F1 составит: 5*24 + 6*77= 582 байта, что всё-равно не даёт 8 полных строк, а только 7.

    Недостаток этого метода такой-же, как и при переносе экрана ниже 7500, - пропадает возможность вызывать подпрограммы ПЗУ для вывода на экран и с экраном приходится работать внаглую.

    Метод vinxru может быть ценен тем, что даёт ускорение, сокращая число циклов ПДП на 5-ти невидимых строках (с 10-ти пакетов на строку до 1). Теоретически нельзя рассчитать какое это даст ускорение. Возможно ~10%, что тоже неплохо. Можно ускорить прогон еще больше, если заглушить каждую нечётную строку. Заглушить более 2 строк подряд нельзя, нарушится регенерация ОЗУ.

    Эту идею можно заимствовать в ПЗУ F800, устанавливая адрес начала экрана не на 76D0, а на 77С2-3. И заглушая первые 3 строки кодом F1, а последние 2 строки кодом конец экрана. При этом адреса начал строк не изменятся и совместимость с корректными программами сохранится, но в играх, что выводят тексты вне экрана 64*25, т.е на бордёре этих текстов видно не будет. А при запуске тех игр, что пишут на 26 строке и ниже, вообще будет затёрт атрибут конец экрана... что возможно и не приведёт к трагедии, но надо посмотреть в реале.

    Метод vinxru имеет смысл и даёт видимых 30 или 31 строку в текстовых программах, где есть символы.

    Важная цель вывода в графическом режиме получить лучшее разрешение, что составляет со стандартным фонтом (с графической матрицей знакоместа 2*2) - 128*60 (режим 36 строк, 30 видимых), а при альтернативном фонте с графической матрицей знакоместа 3*2 и перепрограммированием ВГ75 на строки высотой в 2 линии растра - аж 192*104 (режим 60 строк, 51 видимая). Возможно запрограммировать ВГ75 на 64 строки, сделав ещё больше видимых строк, но тут надо экспериментировать и проверять всё в реале, чтобы частоты строк и кадров не изменились.

    Однако, у меня есть сомнения против такого режима ВГ75. Во-первых, для регенерации ОЗУ надо чтобы перебирались все адреса. И если мы заглушим ПДП на позиции 73, то ячейки соответствующие позиции 73...78 никогда не регенерируются. В целиком заглушенных строках вообще не производится регенерация динамической памяти. Период регенерации РУ5-тых 2 МСЕК, это значит, что регенерация должна происходить каждые 3 строки. 2000 МКСЕК : 64 * 10 = 3 строки. Перебор всех 128 адресов занимает 2 строки. Так что если мы заглушаем регенерацию на 5 строк (3 сверху, 2 снизу), у нас будет перерыв регенерации на 64*8*7= ~3.9 МСЕК, что намного больше периода регенерации РУ5-тых и содержимое ОЗУ разрушится. Поэтому трюки от vinxru можно применять только при статической памяти.
    Последний раз редактировалось barsik; 09.03.2017 в 20:51.

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

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

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

Похожие темы

  1. Ответов: 210
    Последнее: 26.07.2019, 11:45
  2. Ответов: 6
    Последнее: 07.02.2016, 11:55
  3. Трюки с контроллером FDD 82077
    от Titus в разделе Утилиты
    Ответов: 4
    Последнее: 10.06.2011, 19:17

Ваши права

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