Вложений: 5
Давайте сделаем игры РК86 красивыми
А не могли бы Вы сделать игру чуть красивее, используя не изображения стандартных символов, а специально нарисованные символы. В текстовых ЭВМ фигурки изображаемые символами, по сути являются спрайтами. И если использовать фонт, в котором вместо символов прошиты стилизованные фигурки или элементы пейзажа, то будет красивее. Если Вы почитаете последние сообшения в теме http://zx-pk.ru/threads/27125-moduln...6rk/page8.html, то Вы обнаружите там моё предложение впаять на место панельки для фонта РФ2 панельку на 28 ног, чтобы ставить туда большое ПЗУ типа 27256 (или 62256 с подпаянной батарейкой).
Конечно это следовало сделать 30 лет назад, чтобы дать РК86 шанс иметь приличные игры. Например, в текстовом ГДР-овском компьютере AC1 (1984) ввели второй фонт, чтобы использовать в играх. "Лучше поздно, чем никогда", давайте сделаем расширение фонта. Кроме того, для РК86 Alex_LG разработал несложную схему загрузки фонта, но её никто не станет делать, пока нет соответствующего ПО, использующего полноценную графику. Дайте этой доработке шанс.
Хотя для начала проще выкусить панельку на 24 ноги и впаять панельку на 28 ног. Я так уже множество раз делал на ОРИОНЕ, заменяя его ПЗУ РФ2 на 27256. Выводы 1,2 и 27,28 отгибаем в стороны, на выводы надеваем прокладку (от разобранных разъёмов СНП), это пластмассовая пластинка толщиной 0.5 мм с дырками с шагом 2.5 мм, что поднимает панельку над платой, отчего отогнутые в сторону выводы оказываются над платой. Я сам пока использую такой, более дешёвый вариант: на РФ2 напаивается панелька, уже в которую вставляется вторая РФ2, давая тем самым 4 фонта. В качестве чип селектов используется прямой и инверсный сигнал PA0 ППА D14. При этом требуется инвертор (он есть на плате).
Расход в несколько кусочков проволоки и одну панельку окупится миллион раз. Не только резким улучшением качества игр. Нормальные шрифты для текстообработки (маленькие и большие русские буквы), не говоря уже о возможностях иметь рамки в программах и инверсные окна, превращают РК86 в компьютер для игр и текстоообработки лучший, чем СПЕЦИАЛИСТ, а при добавке цвета и ОРИОН. Т.е простейшее расширение фонта, делает РК86 по играм близким к денди, а по текстообработке к Роботрону. И всё это достигается работой кусачками и паяльником в течение получаса. Грех это не сделать. А, если не делать, т.е не иметь "движения" на платформе РК, то зачем вообще иметь РК86? Только ради ностальгии достаточно и эмулятора.
Я очень рад, что для РК86 стали появляться новые игры. На Западе для рэтро компьютеров этим занялись давно и даже для ZX80 с ОЗУ в 1 кб выпустили до сотни игр, причём, что нагло, продают их за деньги, т.к есть эмуляторы для всех платформ смартфонов и число потребителей игр для ZX80 вновь стало большим. Если ввести фазы для спрайтов, то движения фигурок будут намного реалистичнее, даже при использовании спрайтов с размером в символ (особенно, если у Вас заменён счётчик ИЕ4 на ИЕ5, отчего фонт стал 8*8 вместо некрасивого 6*8), А используя спрайты 2*2, 2*3 или 3*3, игра вообще станет графической.
В эмуляторе B2M легко получить переключаемые 32 фонта и такой конфиг-файл я имею. Так что разработчик уже сейчас может отлаживать игру с графическими спрайтами, причём с объемом спрайтов до 8-ми фонтов. Не 16 фонтов из-за того, что бит RVV в этом эмуляторе занят на вариант инверсии (ж.Радиолюбитель 04.1992). Этот бит и должен переключать инверсию, но не так неудобно для программиста, как это сделано в АПОГЕЕ, а через фонт.
Однако, значительно легче и на порядок быстрее можно делать игры для РК86 используя ЯВУ. В частности BDS-C (или другой СИ для КР580, если такой будет найден) и на языке PL/M. PL/M даёт код эффективнее, чем ассемблер (по размеру кода и скорости прогона), но по нему трудно найти учебники на русском. А вот использованию СИ ничего не мешает. Я уже делал эксперименты в 1994 по написанию ПО для РК86 на СИ. Достаточно переписать RUM-time модуль, что находится в начале кода, а для игр и этого не надо. Причём, для игр остаётся простор творчества и для любителя ассемблера, т.к написав работающее ядро игры, затем надо все критические по времени прогона подпрограммы переписать на ассемблер.
Для РК86 ещё никто не писал игр на ЯВУ (естественно СИ и ПАСКАЛЬ из 1987 года, что входили в дистрибутивы клонов и находятся в ОЗУ во время прогона, отчего, ни для исходника, ни для объектного кода нет места, - это чушь).
Для управления фонтом, можно использовать 1 или 2 атрибута ВГ75 (остальные атрибуты для цвета, но не такого как в АПОГЕЕ), и порт А ППА D14 (т.к фонтов 32, одним битом уже не обойтись). Но первые 4 фонта должны быть стандартными. Фонт 0 - базовый РК86. Фонт 1 - даёт инверсию знакомест, рамки и инверсные окна с рамками. Фонты 2 и 3 - для текстообработки, где фонт 2 аналогичен базовому, но вместо псевдографики маленькие русские буквы. А фонт 3 то же самое, но полностью инверсный. Фонт 4 и 5 необходимо истратить на ASCII, большие и маленькие латинские и их инверсию, т.к в СИ из CP/M небходимы ASCII-символы 60...7F, а также для чтения английских док-файлов. Фонт 6 разумно отдать для псевдографики 192*100. Фонты 8...15 отдаём для цвета в текстовых программах, а все остальные фонты остаются для цветных игр.
Концепция следующая. Атрибут RVV, что и так во многих клонах задействован для инверсии, будет также делать инверсию. Но не напрямую, т.е управляя входом ЛП5, что приводит к инверсии сигнала с выхода ВГ75. Это не выгодно, из-за расхода в 2 доп.ИМС 155 серии, а главное оттого, что намного сложнее программирование (например, если забыть в строку вставить атрибут выключения RVV, то бордюр, что начинается в ОЗУ строки с 71 позиции будет инверсным и синхронизация по строкам сорвётся. При инверсии фонтом, она делается кодом символа и не надо вставлять в строку атрибуты, отчего позиции символов не сдвигаются и подпрограммы ПЗУ F800 по-прежнему работают правильно. Используется режим отображения атрибутов пробелом, но в отличие от цвета АПОГЕЯ, благодаря фонту инверсные и неинверсные символы могут стоять рядом (не разделённые пробелом).
Таким образом, пока (пока нет игр с большим числом спрайтов) для коммутации фонта достаточно всего 1-го атрибута RVV и 4-х битов порта А ППА D14. Эти 5 битов напрямую подаются на адреса A10...A14 ПЗУ 27256. Т.е только замена панельки и кучка проводов, вот и вся доработка превращающая РК86 в почти графический компьютер. Пока черно белый, но и цвет за счёт фонта делается так же просто (и намного удобнее для программиста, чем цвет в АПОГЕЕ).
Используя компилятор BDS-СИ можно делать новую игру за 3-4 дня, а если уже есть опыт и "движок" ранее реализованный (желательно на ассемблере) и 2 помошника (один рисующий графику, а второй придумывающий сценарий), то и быстрее. Для текстовой машины скоростей РК86 хватит. В РК-играх большой расход времени уходит на опрос клавиатуры медленной подрограммой F81B, так что даже, если скоростей будет мало, то опрос ускоряют прямым доступом в порт клавиатуры. Проблема нехватки ОЗУ в 32К легко решается путём грамотного применения проволоки и замены ОЗУ РУ3 на РУ5, тем более, что у большинчства пользователей и без того платы на РУ5, где вторая половина ОЗУ бездарно пропадает.
Т.к для РК86 существует куча клонов, что отличается только адресами портов и адресом начала экрана, я предлагаю ввести стандарт для совместимости всех программ РК-подобных. Начиная с офсета 3 надо разместить параметры, которые настраивает пользователь (вручную. или простейшим инсталлятором). Там д.быть: адрес экрана, адреса портов, реальный такт процесоора и доп.информация, по расширеному ОЗУ - объём и метод коммутации. Программа должна считывать и использовать эти данные. При программировании на СИ это не составит труда. Тем самым мы навсегда избавимся от проблем несовместимости, организованной неумными разработчиками клонов.
Поддержав, сначала простейшую доработку по расширению фонта, и получив десяток игр приемлемого качества, мы создадим предпосылки для использования схемы загрузки фонта, разработанной Alex_LG, а главное тогда у пользователей появится стимул сделать чуть более сложные доработки (второе ПЗУ фонта, чтобы получить цвет), турбировать РК86 до 3 МГЦ и расширить ОЗУ до 128К...4 мб. Тем самым мы превратим РК86 в "компьютер времён и народов", но главное, - получим приятную платформу для творчества.
В приложении картинки, что достигаются в базовом РК86 за счёт куска проволоки в 10 см (и допрошивки второго фонта в ПЗУ знакогенератора на РФ2). Это даёт всего 1 дополнительный фонт, который истрачен на инверсию знакомест и рамки (для цвета нужно ещё 8 фонтов в параллельном ПЗУ). Сравните расход деталей, труд и результат, с тем что достигается в АПОГЕЕ с его способом использования атрибутов и кучей деталей для цвета. Чтобы окна в РК86 стали цветными надо истратить лишь второе ПЗУ (для фонта цвета) и смонтировать R.G.B. видеовыход.