"Фантастика 2024-110". Компиляция. Книги 1-19 (СИ) - Войтенко Алекс (читать бесплатно книги без сокращений .txt, .fb2) 📗
«Цифровые мушкетёры» Антон, Алексей, Имант и Каспар.
То ли кукловод, хехе и «кардинал», то ли «капитан-лейтенант мушкетёров» — попаданец из 2018-го.
И две музы — Марго и Маринка.
К шести вычислителям, задействованным в разработке и тестировании игрового ПО, подключены шесть мониторов из первой партии от «смежников» по НКЭП, и периодически подключаемые два наших домашних телевизора. Для сравнения — «как это будет выглядеть на более качественном 'монике» и как — на обычном бытовом ТВ, сигнал куда подаётся через антенный вход «зомбоящиков». Имеется пара гибких дисководов и пара бытовых магнитофонов. «Печатник» (принтер). Гора рулонов распечаток с ассемблерными «портянками» кода игр. Магнитофонные катушки с резервными копиями…
Марго с Мариной по очереди (младший ещё мал, он только иногда поглядывает на происходящее вокруг действо из «манежа») заняты тестированием игр на пятом вычислителе. Я сам работаю на шестом. (К слову говоря, замечу, что супруга потратила за прошедшие к тому моменту неполные 13 лет нашего совместного житья-бытья немало времени, играя и записывая геймплей множества «игр будущего» (нативные из числа имевших на ноуте и под эмуляторами старых платформ) в предвидении мною окончания срока службы «железа», попавшего в 1940-й.)
…Здесь делали игры. Здесь творилась история, которая, между прочим, ежедневно фотографировалась в расчёте «на будущее». Для другой, официальной, более прилизанной и доступной взгляду широкой публики книги «как это было».
Для меня было очевидным, что главное в самом первом взгляде на большинство электронных игр — это графика. Даже геймплей оценивается спустя короткое, но всё же большее время.
Поэтому, ещё до того, четвёрка помогла мне реализовать идеи насчёт «электронные игры — в массы!», корпеть НИИВТ и КБ МЗЭТ при проектировании видеочипа («дисплейного процессора») пришлось очень и очень, стараясь «достичь многого при учёте всех ограничений».
А лично мне — править ТЗ и чётко держать «руку на пульсе» разработки, всегда вытаскивая из головы и материалов на компе любой ценный «опыт будущего».
Стандартное разрешение, гарантированно поддерживаемое минимальной конфигурацией с 16 кб видеопамяти (как единственно возможной для приставки, так и для первого, не «прокачанного» платами расширения варианта М-7) 320×200.
Но даже в таком «скудном» (лишь в образах внутри моей, да немногих «допущенных» головах, да…) разрешении, поддерживаемых видеорежимов в нём целая куча:
8 двухцветных (черно-белый, жёлто-зелёный и прочие контрастные схемы) однобитных (на пиксель) режимов, соответственно использующих только 8000 байт из видеоОЗУ (320×200/8)
Есть и четырёхцветный видеорежим — двухбитный (на пиксель) режим (320×200/4)
Был забавный момент. Отдельный утончённый ум из КБ МЗЭТ, участвовавший в проектировании видеочипа для М-7/приставки, предложил реализовать «извращенскую» схему, которую я опознал как аналогичную «Спекки» — когда содержимому его, фактически черно-белого изображения (один бит на пиксель) предлагалось присваивать, в рамках знакоместа размером 8×8 точек (т.е. квадрату из 64 пикселей на экране) однобайтовый «атрибут», три бита которого давали цвет переднего плана, три бита цвет фона, 1 бит яркости и 1 бит мигания. Это давало возможность использования 15 цветов. На реальном «Спекки» таким образом, при разрешении 256×192 видеопамять занимала всего 6912 битов, т.е. менее 7 килобайт и давала приличное быстродействие без аппаратного скроллинга.
Но, помня, что:
а)…то, как тяжело было программистам игр и других программ на ZX Spectrum моего прошлого работать с подобным устройством видеопамяти…
б)…имея уже заложенные в видеочип возможность аппаратных вертикального (гладкого, через пиксель) и горизонтального (пусть и через 8 или 4 пикселя) скроллинга и, (главное) аппаратных спрайтов…
в)…предполагая быстрое развитие плат расширения с дополнительным видеоОЗУ, как и увеличение списка доступных многоцветных видеорежимов, что изначального закладывалось в возможности стандартного видеочипа…
г)…предполагая последующее появление плат расширения в виде «внешней видеокарты» с вообще новыми видеопроцессорами с более широкими возможностями…
…я пресёк ту идею, пояснив вышеуказанные моменты, адаптировав свои слова возражения к «текущей реальности»:-)
Стоит заметить, что в двухцветном видеорежиме была реализована та самая крайне приятная для программирования игр возможность использования аппаратных спрайтов, «накладываемых» видеочипом поверх основного изображения — до 64 спрайтов 8×8 или до 32 16×16, которые располагались, при потребности в них, программистом игры в оставшейся свободной видеопамяти. Каждый спрайт мог иметь один из 256 цветов!
Маски ( 0 — прозрачное, 1 — непрозрачное, цвет задаётся для всего спрайта отдельно) 64 спрайтой 8×8 пикселов занимали 512 байт видеопамяти или в случае 32 16×16 — 2 кб.
Работа с которыми, после размещения их в видеопамяти, была крайне проста для программиста. Всего лишь — манипуляции со списком их координат (применительно к экрану), номером цвета (0–255) и указателями на размещение в видеопамяти.
Четырёхцветный видеорежим занимал 16000 байт из 16384 видеопамяти, оставляя там лишь 384 байта, для хранения в которых видеочип поддерживал работу 32 спрайтов 8×8.
В видеочипе, для скроллинга были два «хитрых» спецрегистра, использовавших схему манипуляции через их значения для смещения отображения реального содержания видеопамяти на экране.
При «гладком» вертикальном скроллинге схема работала так:
При нулевом значении регистра видеочип просто отображал по порядку соответствующее содержимое видеопамяти с начального адреса в ней с первой линии на экране по последнюю. При увеличении значения регистра с 0 на 1 видеочип отображал содержимое видеопамяти с начального адреса начиная со второй линии по последнюю, показывая то, что было в предыдущей итерации на последнее линии, уже на первой.
При необходимости, за время «обратного хода луча» монитора (телевизора) игра должна была «перерисовывать» программным способом первую линию, формируя новый «выползающий бэкграунд» невидимо для играющего.
Увеличивая-уменьшая значение, возможно было скроллировать содержимое экрана в обеих направлениях.
Для аппаратного горизонтального скроллинга такой фокус также был возможен, но, по аппаратным причинам, только через 8 или 4 пикселя. (байт видеопамяти, соответственно, отображал 8 (для случая 2 цветов на пиксель) или 4 пикселей (для случая 4 цветов на пиксель)).
Именно в расчёте на подобные аппаратные графические возможности и создавался первый набор игр полноценной 8-битной платформы, с двумя её ветвями развития!
«Крышесносящим» в оглушающем успехе старта доступных для масс электронных игр было то, что нами было выпущено сразу много игр, заметно превосходящих по качеству то, что появилось на первых игровых приставках и слабых ПК конца 70-х — начала 80-х «утерянного прошлого». Возможности платформы сразу использовались практически по максимуму — послезнание, в очередной раз сказало своё слово.
Простым сравнением и описанием сего факта выглядит фраза «игры на компьютерах начала 80-х были из из конца жизненного цикла этих платформ».
Многие наши конкуренты в создании игр, появившиеся на волне успеха продаж платформы в СССР, Европе и за океаном (производимые по лицензии, купленной IBM) и созданного нами игрового софта к обеим ветвям платформы, какое-то время тупо задавались вопросом — «как это сделано⁇» Даже имея возможность дизассемблирования и качественную документацию по архитектуре платформы, рекомендации по программированию для неё, прошло немалое время, прежде чем эти самые конкуренты подтянулись за нами.