Флейм
GameDev.ru / Флейм / Форум / Блеск и нищета 8/16-битных консолей и ПК

Блеск и нищета 8/16-битных консолей и ПК

Поделиться
Страницы: 1 2 310 11 Следующая »
=A=L=X=Постоялецwww29 мая 201712:33#0
Некоторые аппаратные и программные решения 8-битной и 16-битной эпох иногда огорчают или обескураживают, а иногда вызывают изумление.
В этой теме предлагаю собрать коллекцию таких "фичебагов", кто что знает, кто что помнит, кто что прочитал или подсмотрел в ютубчике.

P.S. Выделил эту и тему про 32-бита в сообщество: http://www.gamedev.ru/community/old_tricks/articles/

ОГЛАВЛЕНИЕ

Видеостраницы в NES/Dendy
HBlank-отсечение (NES/Dendy)
Mode 7 (SNES)
Архитектура памяти в NES/Dendy
Мапперы NES/Dendy
О количестве тайлов и спрайтов в NES/Dendy
Видережим HAM в компьютерах Amiga
Sega Mega Drive против Super Nintendo Entertaiment System с точки зрения разработчика / процессор
Имитация двух задних фонов на NES/Dendy
Чипы расширений на SNES
Имитация двух вращающихся слоёв в SNES
Чип расширения Sega Mega Drive
Архитектура видеочипа Sega Mega Drive (+трюки с ним в нескольких играх)
Архитектура видеочипа SNES (+сравнение с Sega Mega Drive)
Сосуществование RAM и ROM в Commodore 64
Про звук на примере Sega Mega Drive и SNES


(помните, что иногда текст не влазит в один комментарий и растягивается на два и даже более)

Аналогичная тема про 32/64-битные консоли находится тут: http://www.gamedev.ru/flame/forum/?id=231027

Правка: 13 дек. 2017 7:51

return [](){};Участникwww29 мая 201714:31#1
На сеге некоторые игры умудрялись менять палитру во время hblank прерывания, и все что ниже рисовалось с другой палитрой.
CStalkerПостоялецwww29 мая 201714:53#2
=A=L=X=
> Однако без особого труда можно вспомнить и игры с произвольным скроллингом
Я помню, что в Adventure Island экран мог скроллиться в двух направлениях - при подъеме на гору, к примеру, и при этом в углах экрана появлялся мусор.
=A=L=X=Постоялецwww29 мая 201714:54#3
Видеостраницы в NES/Dendy

Некоторые аппаратные и программные решения 8-битной и 16-битной эпох иногда огорчают или обескураживают, а иногда вызывают изумление.
В этой теме предлагаю собрать коллекцию таких "фичебагов", кто что знает, кто что помнит, кто что прочитал или подсмотрел в ютубчике.

Затравочную фичу зачну с незабвенной Денди/NES/Famicom:

По моим всем впечатлениям её когда создавали, то не предполагали, что она будет использоваться для тех игр, которые на ней с середины срока жизни появились - произвольные скроллеры, черепашки и черные плащи - это явно было за гранью воображения людей, которые аппаратный дизайн денди сотворили. Смотрели они и думали в реалиях своего года, когда только-только отмерли всякие ColecoVision и прочие "видеотеннисы".
По сути те китайские многоигровки, которые с приставками обычно в комплекте в коробке шли - они содержали именно игры о которых думали и заботились разработчкики платформы - все эти танчики, галаксианы, бомбермены, лоад раннеры и т.п.

Так, например, видеочип денди мог делать плавный скроллинг заднего фона, но в сердце видеочипа он мог это делать бесшовно либо по вертикали либо по горизонтали, но не оба метода сразу.
Причём как это всё выглядело технически... выглядело вот так:

+--+--+
|01|02|
+--+--+
|03|04|
+--+--+
Что тут изображено: каждый экран вмещал 32x30 тайла 8x8 пикселей каждый.
Но в видеопамяти было места под целых 4 "видеостраницы" такого размера (32x30 байта + доп. информация, которая здесь неважна, всего 1024 байта на страницу), каждый байт содержал индекс выводимого тайла собственно от 0 до 255, таким образом одновременно фоны не могли отображать больше 256 разных тайлов одновременно без модернизации консоли (которая была возможна, но об этом в следующий раз).

Так вот - при всём при этом можно было "прокручивать" отображение видеостраниц на экран и если сильно выйти за пределы одной видеостраницы, то на экран начинало выводится содержимое соседней - ровно как изображено на рисунке выше, 4 видеостраницы образовывали виртуальную сетку 64x60 тайла, т.е. правее видеостраницы 01 находится видеостраница 02 и она станет видна, если немного проскроллить экран вправо от начальной позиции.

Однако проблема была в том, что в денди было встроено памяти только на первые 2 видеостраницы - 01 и 02, плюс к этому можно было включить альтернативный режим маппинга, который располагал видеостраницы иначе:

+--+--+
|01|03|
+--+--+
|02|04|
+--+--+
...и вот так и получилось, что либо так либо эдак, но скроллить бесшовно можно или влево-вправо или вверх-вниз, если проскроллить так чтобы стали видны все 4 видеостраницы, то в двух из них будет содержаться мусор, т.к. в консоли просто не выделено под них было видеопамяти.

Если повспоминать, то хвосты этого факта вылезут в очень многих играх, например - Черном плаще - она всегда скроллилась только в одном направлении, лишь иногда меняя направление скролла в особых переходных угловых экранах. То же самое было в контре, чипе и дейле и многих других. В моменты "перегиба" видепамять перестраивалась под 01/02 или 01/03 для горизонтального или вертикального скроллинга соответственно, только быстро, чтобы сохранить иллюзию бесшовности.

Однако без особого труда можно вспомнить и игры с произвольным скроллингом - такие были. Как же так?
И секрет тут довольно таки лобовой, но несколько неожиданный - в таких играх картриджи содержали в себе 2Кб RAM, которая маппилась ими на 3-ью и 4-ую отсутствующих в самой консоли памяти видеостраниц. Вот и всё. Т.е. для произвольного скроллинга картридж должен был расширять аппаратную недоработку консоли содержа необходимую память в себе.

Вообще эмуляция денди невозможна без эмуляции аппаратной начинки еще и картриджей - их центральным чипом являлся так называемый "маппер", который как раз, помимо своего прямого назначения - маппинга ROM картриджа в адресное пространство консоли мог содержать довольно замысловатую логику для аппаратного расширения возможностей консоли.

Правка: 8 ноя. 2017 12:04

=A=L=X=Постоялецwww29 мая 201715:10#4
return [](){};
> На сеге некоторые игры умудрялись менять палитру во время hblank прерывания, и
> все что ниже рисовалось с другой палитрой.

Ага. Вообще изменение параметров видеоадаптера во время HBlank - тема очень перспективная и часто используемая.
Про это я тоже тут хотел рассказать. Так что сейчас и расскажу.

HBlank-отсечение (NES/Dendy)

В той же Денди/NES/Famicom был один тайловый фон + 64 летающих поверх него спрайта. При этом видеоадаптер не мог отрисовать больше 8 спрайтов в одной строке - как максимум они могли начать мигать специфически, чтобы нестабильно, но было видно все. Известный тоже эффект.
Вообще видеоадаптеры 8/16-битных консолей были очень специфическими - они были буквально "построчные" - перед отрисовкой каждой строки видеочип производил всякие вычисления, лазил в видеопамять, строил линию, проверял какие спрайты в неё попадают и т.п., и в конце концов выводил её. Тактов у него на это было ограниченное количество и если что-то не влезало в лимиты - оно просто "отбрасывалось". Это прослеживается хорошо и в 32-битном GBA, про который я пишу в соседнем разделе. В результате, если ухитрится за HBlank, т.е. время когда луч кинескопа телевизора "возвращается" с конца предыдущей строки в начало следующей видеоадаптеру поменять параметры - это могло легко и без проблем расширить возможности видеосистемы.

Так в Денди/NES/Famicom снизу экрана обычно выводятся очки жизней, континуы, и всякие прочие параметры. Но у консоли нет отдельного фона под это - "задний фон" есть только один и у него единые параметры скроллинга (см. первопост).

Тут то и приходит на помощь HBlank - в определенной строке игра просто подменяет параметры скроллинга заднего фона на лету так, чтобы в нижних строках всегда оказывалась часть заднего фона с игровой статистикой - она получается что сидит как приклеенная, хотя остальной фон спокойно при этом скроллится.
Понятно, что такая граница может быть сделана сколько угодно раз на экране, но только по горизонтали.
Таким образом, например, летает огромный самолёт в одном из уровней Contra Force (Super Contra 6):
Изображение
Заметьте - самолёт сверху свободно летает. Он слишком большой чтобы быть составленным из спрайтов - он сделан фоном, поэтому другого фона сзади него нет - просто и не может быть. Фон с самолётом скроллится чтобы создавалась иллюзия того, что самолёт двигается. При этом можно ходить влево-вправо и полоска из блоков под ногами игрока тоже будет скроллится независимо от самолёта, но еще плюс третье HBlank-отсечение сделает неподвижный вывод статистики в самом низу. Так что здесь у нас 2 HBlank-отсечения.

А вот у одного из боссов в Chip & Dale 2 уже хватило бы одного:
Изображение
Трактор этот ездит влево-вправо, что тоже требует управления HBlank-ом на границе с поверхностью.

Таким же способом можно сделать эффект ограниченного параллакса, например в Gun Dec:
Изображение
Город и вода на заднем фоне скроллятся медленнее, чем платформы по которым прыгает слева-направо игрок - всё то же самое - HBlank-отсечение позволяет одним задним фоном выводить как будто бы несколько независимых, но каждый из них кончается по вертикали там, где начинается другой. Причём здесь мы имеем целых 3 отсечения - город на заднем фоне, вода, платформы и статистика образуют 4 независимых горизонтальных фона. Gun Dec вообще был хорош на подобные спец-эффекты, его маппер был довольно навороченным, потому что вода еще и "колыхалась", что тоже было невозможно без продвинутого маппера в картридже.

Правка: 8 ноя. 2017 12:06

0iStalkerМодераторwww29 мая 201715:53#5
У спектрума дисплейный адаптер вообще под игры не проектировался, от слова совсем... правда, после смерти платформы, умельцы умудрились запилить вот такое, в том числе и через мухлёж с цветовыми атрибутами во время hblank

DexusУчастникwww29 мая 201716:47#6
0iStalker
Да ладно не проектировался под игры? Просто игры, под которые он проектировался, далеки от "платформеров". Под маникминеров он проектировался ;)
=A=L=X=Постоялецwww29 мая 201717:09#7
Dexus

Ну что правда то правда - в ZX Spectrum 16/48 не было ни одной чёртовой аппаратной особенности, которая бы помогала делать видеоигры. Ни одной. Наоборот - все его аппаратные особенности как правило мешали делать видеоигры, являлись своеобразными препятствиями разной степени.

В пику этому можно вспомнить его прямого конкурента на поприще массовых и дешевых 8-битных персоналок - Commodore 64.

В коммодоре под RAM могли быть отведены все 64Кб памяти ПК (вместе с видеопамятью), верхние 24Кб могли просто переключаться на банки ПЗУ - причём по отдельности каждый - 8Кб под простейшие процедуры ввода-вывода (считай что BIOS), 8Кб под дефолтный charset ASCII и 8Кб под интерпретатор бейсика. Т.е. по пожеланию игра могла отключить ненужный ей BASIC и перевести занятую им память в режим ОЗУ или дефолтную кодировку символов или BIOS.
В то же время видеоадаптер коммодора поддерживал целых 5 разных видеорежимов три из которых по сути своей были тайловыми видеорежимами с аппаратно скроллящимся тайловым задним фоном и 8 аппаратными спрайтами - довольно таки похоже на денди - причём можно было в вышеупомянутом HBlank эти 8 спрайтов можно подменять на лету в разных строках и иметь больше 20 независимых аппаратных спрайтов на экране.
Т.е. скроллеры - да ради бога. Спрайты - да вот они. Аппаратно,
Спектруму такое не снилось - графоний в играх был очень дёрганным, 16Кб памяти было намертво "откушено", видеорежим один единственный и неудачный для скроллеров, очень большой и неповоротливый по объёму.
Ну и не говоря еще о звуковом чипе, который сейчас называют чиптюном, тоже был сразу в коммодоре-64, а у спектрума появился только в старшей модели с 128Кб, а до того он щеголял однобитовым спикером, который редко мог чего кроме потрескивания в видеоиграх.

Так что да, Spectrum явно делался по принципу "дешево и сердито" - он был дешевле коммодора и видеоиграм в процессе проектирования внимание если и уделялось, то по остаточному принципу.

Правка: 29 мая 2017 17:12

DexusУчастникwww29 мая 201718:05#8
=A=L=X=
Спектрум именно что разрабатывался как "дёшево и сердито", и никакие доп. сопроцессоров не было - все эти штуки были за счёт CPU. В то же время сам CPU был быстрее чем коммодоровский, благодаря этому он и тянул игры. И благодаря этому те же 3D игры в нем куда играбельнее. Нельзя сказать что он не проектировался для игр. Просто таких узко специализированных архитектурных решений не было. Ради удешевления. Те же приставки у нас имело гораздо меньше подростков, чем спектрумы. А клммодор вообще был у единиц - больше штуки баксов в те времена.

Просто к слову- порты игры R-Type. Сравни. Как раз с к спектруму с его биперными шедеврами как в Chronos, "блеск и нищета" относится как нельзя лучше чем любая другая платформа, бывшая в России.

Правка: 29 мая 2017 18:10

0iStalkerМодераторwww29 мая 201718:41#9
Dexus
> Спектрум именно что разрабатывался как "дёшево и сердито",

Настолько дёшево и настолько сердито, что видеопамять работала на пониженной частоте, что добавляло разработчикам фана, в процессе работы. Этот недостаток, выправили только в модели с 128к оперативки и музыкальным сопроцессором.  В общем-то, разрабатывали его как офисный комп, отсюда заточка под знакоместа и аппаратное мерцание для реализации текстового курсора.

Dexus
> В то же время сам CPU был быстрее чем коммодоровский

А вот нет, по сути MOS6510 это расширенный 6502, который таки даже на меньших частотах был быстрее, чем Z80 за счёт режимов адресации в первой странице оперативки.

Правка: 29 мая 2017 18:48

SuperInoyПостоялецwww29 мая 201718:58#10
Dexus
> Те же приставки у нас имело гораздо меньше подростков, чем спектрумы.
ЧОООООООООООООООООООООО
в каком году?
DexusУчастникwww29 мая 201719:41#11
SuperInoy
Начало 90х.

0iStalker
> Настолько дёшево и настолько сердито, что видеопамять работала на пониженной частоте,
Да, такова цена дешевизны. Память одноканальная, для развёртки когда читается, процессор ставится на HALT.  И в 128к версии это неизменно. Единственное что вторую страницу добавили, но это вообще мало кто использовал.
> который таки даже на меньших частотах был быстрее, чем Z80 за счёт режимов адресации в первой странице оперативки.
Ерунда.
Это очевидно на любых 3D играх. И не помогает даже двойная ширина пикселей (что их почти в 2 раза меньше чем в спекки)

Правка: 29 мая 2017 19:49

SuperInoyПостоялецwww29 мая 201719:44#12
Dexus
> Начало 90х.
Ну в начале да, а уже ближе к середине приставок было в разы больше.
DexusУчастникwww29 мая 201719:49#13
SuperInoy
> Ну в начале да, а уже ближе к середине приставок было в разы больше.
Может во всяких столицах.
SuperInoyПостоялецwww29 мая 201719:52#14
Dexus
> Может во всяких столицах.
Cкажу по другому, не приставок, а конкретно dendy. Их было дохренилион.
Страницы: 1 2 310 11 Следующая »

/ Форум / Флейм / Железо

2001—2017 © GameDev.ru — Разработка игр