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

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

Поделиться

Страницы: 1 2 3 4 5 6 7 8 9 Следующая

eMan.LivedПостоялецwww18 авг. 20170:56#75
=A=L=X=
> А, надо было регион принудительно сменить на PAL в том же FCEUX и нормально
> работает.
А. Так и есть. Почему-то для второй автоматом переключает. Или может сохранил у себя когда раньше запускал.
=A=L=X=Забаненwww18 авг. 20173:13#76
Shurik7777
> До режима HAM был интересный "предок" (на более древних машинах)

Прикольно тоже, скорее всего это было как раз от Коммодора в ранних моделях.

=A=L=X=Забаненwww18 авг. 20173:15#77
eMan.Lived
> А. Так и есть.
На самом деле очень странная фигня, потому что насколько я знаю код региона указывается в том числе в заголовке образа картриджа и всё сразу должно быть нормально.
Не знаю что тут пошло не так.
Shurik7777Постоялецwww18 авг. 201722:11#78
=A=L=X=
> Прикольно тоже, скорее всего это было как раз от Коммодора в ранних моделях.
Нет это было не на домашних компьютерах, а на машинах посерьезнее. Возможно, на тех самых военных авиасимуляторах. Но где я про это прочитал, не помню.
=A=L=X=Забаненwww8 сен. 201711:57#79
на этот раз даже дам короткий подзаголовок:
Sega Mega Drive против Super Nintendo Entertaiment System с точки зрения разработчика / процессор

16-битные консоли эти до сих пор вызывают в узких уже только кругах жаркие споры - какая круче. Плюс-минус они были одного ранга и характеристик - где то лучше одна, где то лучше другая.
Интересно, однако, взглянуть на этот же вопрос глазами разработчиков - правда в целом всё это объять конечно не получится, но давайте поговорим о центральном процессоре.

ЦП у SNES был Ricoh 5A22, который является немного переработанным клоном WDC 65816, который в свою очередь является 16-битным потомком 8-битного MOS 6502 - того самого, который был ЦП в NES, то есть денди.
Процессор этот действительно довольно прямолинейно расширяет 6502 до 16-бит - настолько прямолинейно, что сохраняет при этом все его основные и преимущества и недостатки.
Главный недостаток - всего 4 регистра общего назначения - аккумулятор, два индексных регистра X и Y и указатель стека. Шина адреса, однако, была 24-битной и перед процессором вставала классическая задача - как адресовать всё что выше 16-битной разрядности адреса, т.е. выше 64Кб. Решение было тоже довольно типовым - два 8-битных регистра страниц - DB для данных и PB для кода (data bank и program bank). Содержимое этих регистров просто вставлялось в качестве верхних 8 бит 24-битного адреса - PB при извлечении очередной инструкции из памяти и DB в остальных случаях. Таким образом, кроме необходимости, всё время перекладывать данные в память и обратно из-за малого количества регистров мы имеем сегментацию памяти.
Интересно тут посмотреть как выкрутились из этой ситуации создатели SNES проектируя карту памяти девайса.
Ведь понятно, что огромную часть времени процессору надо и обращаться к ПЗУ картриджа и в то же время манипулировать данными в ОЗУ - но если их развести в разные сегменты (а разводить их по сегментам просто необходимо) - то придётся постоянно прыгать туда-сюда, выгружать и перегружать DB, высвечиваются неприятности и по производительности и по геморройности кода.
Создатели SNES всё это прекрасно понимали и выкрутились довольно таки забавным образом - "нарезав" карту памяти девайса на 64Кб-сегменты они сделали это щадящим для программиста образом.
Всего существует 2 схемы этого маппинга памяти картриджа и системы в SNES, они называются LoROM и HiROM. Обилие мапперов как в денди распространения тут не получило - всего было 2 таких вот маппера с завода и программисты сразу решали какой им приятнее. Я расскажу только ключевую идею, лежащую в основании обеих систем - ROM картриджа "нарезалась" на первую сотню сегментов так, что в каждом сегменте маппинг памяти картриджа происходит только на верхние 32Кб адресного 16-битного пространства. Нижние же 32Кб были заняты всегда одними и теми-же 8Кб ОЗУ и портами ввода-вывода. И только последние 2 сегмента в полном 24-битном адресном пространстве содержали полные 128 Кб памяти девайса - именно первые 8Кб из них мапились в каждую страницу "картриджных" отображений.
То есть можно сказать, адресное пространство в основном было нарезано "слоями" из памяти картриджа, которые перемежались первыми 8Кб ОЗУ и портами ввода-вывода - чтобы "пролистывая" ПЗУ страницами по 32Кб всегда было куда записать что-нибудь в ОЗУ и пообщаться с устройствами. И только настроив DB на последние страницы памяти можно было работать со всеми 128 Кб ОЗУ (порциями по 64Кб за раз правда). Вот как то так это выглядело (недословно, только сама идея!)...

1 сегмент
$000000: первые 8Кб ОЗУ + порты ввода-вывода
$008000: первые 32Кб ПЗУ картриджа
2 сегмент
$010000: первые 8Кб ОЗУ + порты ввода-вывода
$018000: вторые 32Кб ПЗУ картриджа
3 сегмент
$020000: первые 8Кб ОЗУ + порты ввода-вывода
$028000: третьи 32Кб ПЗУ картриджа
...
255 сегмент
$FE0000: первые 64Кб ОЗУ
256 сегмент
$FF0000: вторые 64Кб ОЗУ
Можно воспринимать это так, что по дефолту в нижних 32Кб адресного 16-битного пространства находятся первые 8Кб ОЗУ + порты ввода-вывода, а сегментные регистры переключают отображение верхних 32Кб на ПЗУ картриджа (что, кстати, весьма похоже на раскладку памяти NES) - кроме самых последних двух значений при которых порты и ПЗУ из памяти исчезают, а она вся становится ОЗУ - одним из двух банков по 64Кб. Настоящие схемы LoROM и HiROM сложнее, запутаннее и мапятся не совсем на эти адреса, но центральная идея крутится вокруг этого.

ЦП у сеги был Motorola 68000 (m68k) первого поколения. Несмотря на то, что он называется нередко 16-битным, это не совсем соответствует действительности. В действительно архитектура m68k с самого начала описывает полноценный 32-битный процессор с полноценными 32-битными операциями и линейным доступом к 32-битному адресному пространству (в первых моделях выведены наружу были только 24 линии шины, но сами адреса всегда были 32-битные и в регистрах и в памяти). Помимо этого он имел 16 (шестнадцать) 32-битных регистров общего назначения! Честно говоря, как по мне, так даже архитектура i386 выглядит немного убого по сравнению с m68k, по крайней мере в те времена. Но почему же m68k назывался 16-битным, а маркетологи сеги нигде не протащили волшебное словосочетание "32 бита"? Потому что в самых первых линейках 16-битным было арифметико-логическое устройство этого процессора - из экономии или из каких-то других соображений, но складывал (и делал прочие операции в АЛУ) 32-битные данные этот процессор в два захода - по 16 бит за раз, что снижало производительность и не давало повода говорить об "32-битной мощи". Однако сложение адресов - например при индексации массивов - уже в первых моделях было 32-битным (АЛУ при этом не задействовалось - складывал адреса блок собственно адресации). Более того, когда более поздние модели m68k обзавелись 32-битными АЛУ - они выполняли уже существующий код с удвоенной скоростью без необходимости перекомпиляции - для программиста 16-битность АЛУ сразу была вещью "за ширмой", скомпилированный код сразу был готов к полноценной 32-битности.
Поэтому у Sega Mega Drive и карта памяти была абсолютно линейной - в самое начало (адреса от $000000 по $400000) отображалось ROM картриджа (максимально - 4Мб), в самом конце (адреса от $FF0000 по $FFFFFF) сидели 64Кб ОЗУ, а между ними болтались неиспользованные диапазоны и порты ввода-вывода.

В связи со всем вышесказанным интересно было прочитать один параграф из интервью 1993-его года с новоиспеченной тогда компанией Treasure: http://megadrive.me/2011/11/03/an-interview-with-treasure/
Компания эта вышла из Konami чтобы сделать для Sega Mega Drive нетленку Gunstar Heroes и в этом интервью с их боссом Masato Maegawa, уже после выхода игры, проскакивает такой вот момент (далее мой перевод):

Вопрос: Konami - большой партнёр Nintendo, почему же вы теперь делаете игры для Sega?
Ответ: Меня всегда очаровывало железо. Люди постоянно сравнивают Mega Drive со SNES, говоря, что у SNES больше цветов и тому подобное...
Но Mega Drive имеет процессором 68000, с которым программисту очень легко работать. Я был программистом годы, делая игры для SNES, и поверьте мне - железо это боль в заднице. Если потребитель смотрит на неподвижные скриншоты, то он может подумать, что SNES лучше, но на самом деле если бы вы попытались впихать Gunstar Heroes на SNES, то нифига бы не вышло. Видите этих боссов? На SNES они бы начали тормозить, эти движения требуют слишком много вычислений. Это может быть сделано только на железе Sega.

Правка: 8 сен. 2017 19:35

ВасянУчастникwww8 сен. 201715:12#80
=A=L=X=
Неожиданно (для меня).
=A=L=X=Забаненwww9 сен. 20178:47#81
В начале еще этой темы я рассказывал про HBlank-отсечения, когда консоль NES/Dendy могла имитировать несколько независимо прокручивающихся задних фона на самом деле аппаратно имея только один - подменой по прерыванию обратного хода луча развёртки кинескопа параметров этого самого заднего фона в какой либо строке, после чего изображение после этой строки выглядело совсем иначе и могло выглядеть как будто бы другим фоном.
Вот, например, как можно было оживить картинку эффектом параллакса в такой игре как Gun Dec (воспроизведение должно начаться с 13:12):

Как видно создаётся иллюзия очень большого числа независимых слоёв, но все они отделены друг от друга строго горизонтальными границами - собственно тех строк экрана, где подменяются параметры фона по прерыванию. Как я упоминал выше, рассказывая про мапперы из коробки железо NES могло сделать только одно HBlank-отсечение за кадр, а для таких многочисленных требовался навороченный маппер встроенный в картридж.
Техника HBlank-отсечения использовалась в играх на NES очень часто, но её всегда с головой выдавали этим вот горизонтальные границы - на большее железо NES было неспособно, так как задний фон у неё аппаратно был только один, то и разные HBlank-отсечения могли только соседствовать по вертикали, но никогда не могли нахлёстываться одно на другое. Или?...

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

Bucky O'Hare, редко, но были такие уровни с "двухслойным" задником (воспроизведение должно начаться с 4:00):

Sword Master, а тут уже такие уровни были нередко - причём с разными видами на горизонте (воспроизведение должно начаться с 1:00):

В обоих играх прекрасно видно, что фоны обладают "настоящей" двухслойностью... Или нет?
Конечно же двух независимых слоёв в железе NES не было и что же на самом деле тут происходит можно увидеть посмотрев в содержимое таблиц тайлов в той же Sword Master - я сделаю сперва один скришнот и пройдя персонажем несколько шагов - второй, чтобы сравнить как меняются таблицы тайлов, сверху "до", снизу "после":

Изображение

И вот он и секрет - игра на лету подменяет зацикленные картинки определенных групп тайлов, чтобы на экране они выглядели скроллящимися независимо от фона - причём забавно, но в Sword Master в тайлах фона присутствуют сразу 4 группы таких тайлов видимо из разных уровней, слепленные в одну строку - это имеет смысл, т.к. используется маппер MMC3, который может подменять отображение ПЗУ тайлов в видеочип страницами по 1Кб - и эти 4 группы тайлов разных горизонтов как раз имеют размер 1Кб, той самой страницы. Судя по всему картридж просто содержит все комбинации изображений этих тайлов и игре остаётся только переключать их отображение налету.
Причём, если внимательно приглядеться к видео Sword Master, то станут заметны "косяки" на фоне некоторых тонких деревьев прокручиваемые таким образом горы на горизонте на самом деле "не стыкуются" между собой - достаточно просто присмотреться повнимательнее.
В Bucky O'Hare же на картридже присутствуют дополнительные 8Кб видеоОЗУ и видимо изображения тайлов этой скроллящейся клетки копируются из ПЗУ, а возможно даже рисуются налету.
Вот такой тоже маленький секретик.

*Lain*Забаненwww9 сен. 201715:43#82
=A=L=X=
интересная стори. спасибо
=A=L=X=Забаненwww13 окт. 201710:59#83
Двумя постами выше я писал, что на SNES не было такого кавардака с мапперами как на NES.
Почти все картриджи делались в одной из двух распаек адресного пространства - LoROM  или HiROM, отличие между которыми не столь на самом деле существенно, главное что до всех 4Мб ROM картриджа можно было дотянуться как минимум порциями по 32Кб отображаемыми в 16-битное адресное пространство процессора Ricoh 5A22 посредством его сегментных регистров. Крайне редко какие игры использовали больше 4Мб ROM и, соответственно, какие то нестандартные мапперы.
Однако как мы видели в случае с NES - мапперы быстро превзошли функции одного только отображения памяти картриджа в адресное пространство процессора и стали содержать дополнительные чипы, вплоть до улучшения графических и звуковых возможностей.
И такой судьбы не избежала и SNES - не так уж мало её игр использовали впаянные в картриджи чипы расширения возможностей консоли.
Более конкретно - как минимум 72 выпущенных игры содержало дополнительные чипы судя по статье в википедии: https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips (в ней же в конце и содержится список этих игр)
Далее я кратко и сжато переведу сюда описания чипов из этой же статьи:

(для сравнения - ЦП самой консоли работал на тактовой частоте 3,58 МГц)

Super FX
Самый известный чип улучшения, хотя и не самый распространённый. Содержал кастомный RISC-процессор (10.7 Мгц в первых ревизиях и на 20.4 МГц в последних), который рендерил в собственный фреймбуфер 2D и 3D графику.
Использовался в таких играх как: Star Fox, Super Mario World 2: Yoshi's Island, Doom (да да, на консоли был порт Doom 1 через этот чип)

CX4
Математический сопроцессор для тригонометрических вычислений базированный на цифровом сигнальном процессоре Hitachi HG51B169.
Использовался в играх: Mega Man X2 и X3

DSP
Чип для векторных вычислений, преобразований битмапов, преобразований координат и т.п. Базирован на цифровом сигнальном процессоре NEC µPD77C25.
Есть 4 ревизии DSP-1/2/3/4 отличающиеся только прошивкой микрокода.
Использовался в таких играх как: Super Mario Kart, Pilotwings, Dungeon Master.

OBC-1
Чип для обработки спрайтов.
Использовался только в одной игре: Metal Combat: Falcon's Revenge.

S-DD1
ASIC декомпрессор тайловых данных из ROM-картриджа для повышения эффективной ёмкости последнего. Данные сжимались алгоритмом ABS Lossless Entropy Algorithm, который разработала компания Ricoh.
Использовался только в двух играх: Star Ocean and Street Fighter Alpha 2.

S-RTC
Часы реального времени.
Использовались только в игре Daikaijuu Monogatari II.

SA1
"Super Accelerator 1" - весьма широко применявшийся чип со вторым равноправным процессором той же архитектуры, что и ЦП консоли, но работающим на большей частоте 10,1 МГц.
Кроме того он имел собственные быстрые 2Кб RAM, модули умножения и деления, специальный DMA-канал, таймеры, региональную защиту и прочие мелкие плюшки.
Использовался в таких играх как: Kirby Super Star, Super Mario RPG: Legend of the Seven Stars, Dragon Ball Z: Hyper Dimension.

SPC7110
Чип для декомпрессии данных от Epson использовавшийся в нескольких играх от Hudson.

ST010/ST011/ST018
Серия чипов, использовавшаяся компанией SETA Corporation. Использовлся как для общих функций так и специфически - для ускорения ИИ в настольных играх.
Первые два содержали процессор NEC µPD96050, а последний - 32-битный процессор архитектуры ARMv3 на 21.47 МГц.


Так что не всякая красочная и технологичная игра на Super Famicom родилась такой от одного только Mode 7 и встроенных возможностей самой приставки - немало игр были усилены модулями расширения в картриджах.

Правка: 13 окт. 2017 11:00

Panzerschrek[CN]Участникwww13 окт. 201718:37#84
=A=L=X=
А чего стоили пользователю такие картриджи с расширениями? Если там проц стоит, круче чем в самой консоли, то и цена у него должны быть как у консоли или даже больше.

Ну и вообще, может это не картридж для консоли, а консоль - это насадка для картриджа?

ВасянУчастникwww13 окт. 201719:19#85
Panzerschrek[CN]
> Ну и вообще, может это не картридж для консоли, а консоль - это насадка для
> картриджа?
Ассоциируется с 16-битными процессорными карточками для Apple II
After the arrival of the IBM Personal Computer and its wide acceptance by the business world, there was interest in a co-processor for the Apple II that would run IBM software. A company called Rana, which had been producing disk drives for the Apple II for several years, came out with the Rana 8086/2 sometime in 1984. This was a system that plugged into slots on a II Plus or IIe, and would allow the user to run programs written for the IBM PC. It would also read disks formatted for that computer (which also used a completely different data recording system than the one used by the Apple II). One Rana owner, John Russ, wrote to A2-Central (then called Open-Apple) to tell of his experience with it: “We also have one of the Rana 8086/2 boxes, with two [Rana] Elite II compatible drives and a more-or-less (mostly less) IBM-PC compatible computer inside it. Nice idea. Terrible execution. The drives are half-high instead of the full height drives used in the normal Elite II, and are very unreliable for reading or writing in either the Apple or IBM format … And this product again shows that Rana has no knowledgeable technical folks (or they lock them up very well). We have identified several fatal incompatibilities with IBM programs, such as the system crashing totally if any attempt to generate any sound (even a beep) occurs in a program, or if inverse characters are sent to the display … The response from Rana has been no response at all, except that we can return the system if we want to. Curious attitude for a company, isn’t it?”[27] By August 1985 Rana was trying to reorganize under Chapter 11, and the product was never upgraded or fixed.
A co-processor called the ALF 8088 had limited distribution. It worked with the CP/M-86 operating system, which was used by some computers just before the release of the IBM PC.[28]
Even the Motorola 68000 processor used in the Macintosh came as a co-processor for the Apple II. The Gnome Card worked on the II Plus and IIe, but like other 68000 cards for the II, it didn’t make a major impact, with the exception of those who wanted to do cross development (create programs for a computer using a microprocessor other than the one you are using).
=A=L=X=Забаненwww13 окт. 201720:17#86
Panzerschrek[CN]
> А чего стоили пользователю такие картриджи с расширениями?

Вообще мутный вопрос. Так то надо каждый случай рассматривать отдельно - что за чип и когда выпущен был картридж. Закон Мура и прижимистость консолевладельцев подчас творили чудеса - на той же NES могли выходить под закат картриджи с дополнительными RAM и VRAM в несколько раз (x4) большими объёмами, чем те что были установлены в  консоль и на цене картриджа это сказывалось... скажем так - умеренно, десятки или даже десяток процентов. Но это уже под закат.
С другой стороны сама SNES вышла в 1991-ом в Северной Америке по цене $200, при том, что судя по интернету игры для неё в начале стоили в разлёте $40-80. Однако к закату консоли цены могли вырастать до $120 как раз видимо за счёт новейших чипов расширения.
Очевидно, что нынешние $500 за консоль и $80 за самый распиаренный эксклюзив сильно отличаются по соотношению...

Правка: 13 окт. 2017 20:36

=A=L=X=Забаненwww14 окт. 20174:48#87
Те, кто читал про знаменитый Mode-7 в SNES могли уже давно заметить одну странность в игре Contra III: Alien Wars, скриншот из которой приводился как пример:

Изображение

Пример того, что раз вот этот самолёт сверху был реализован как масштабируемый и вращаемый задний фон в Mode 7, отделенный от зданий и пола ниже HBlank-отсечением, то у него не могло быть и не было заднего фона. Так как в Mode 7 задний фон был только один. Да, действительно, фона у этого самолёта нет и быть не может и он нарисован как бы на фоне ночного чёрного неба.
Но внимательные из нас могли бы резонно привести как контр-пример босса второго уровня из этой же самой игры (воспроизведение должно начаться с 1:32):

Сам уровень опять так - вид сверху того самого Mode 7 с вращением, но если взглянуть на битву с боссом - то что-то не стыкуется - на заднем фоне явственно видно вращающийся независимо от огромного вращающегося же босса асфальт с разметкой и колдобинами.
Как же так? Где же физические ограничения? Неужели игра использует один из вышеупомянутых чипов расширения? Но почему тогда она не использовала его же в сцене с самолётом?

+ Можете выдвинуть свою версию происходящего прежде чем читать дальше...

=A=L=X=Забаненwww14 окт. 201712:00#88
После экскурса в чипы расширения в картриджах SNES любопытно еще взглянуть как обстояли с этим дела у главного конкурента - Sega Mega Drive (или Sega Genesis в Северной Америке).
А обстояли они у неё... практически никак. Несмотря на то, что Mega Drive появился почти ровно на 2 года раньше SNES и таким образом заметно дольше держал рынок - но судя по всему единственным чипом расширения для неё был SVP - Sega Virtua Processor, использовавшийся всего в одном картридже - порте на домашнюю консоль игры Virtua Racing с игровых автоматов.
Причём судя по всему сделать этот чип Sega захотела ровно после того как увидела полигональную графику у конкурента в игре Star Fox (1993 год выхода) использовавшей чип Super FX.
Сказано - сделано и в 1994-ом Sega выпускает Virtua Racing на мегадрайве:

Изображение

Чип расширения содержал 16-битный цифровой сигнальный процессор Samsung SSP1601 и наскипидаривал полигональную графику заметно сильнее, чем Super FX конкурента - и полигонов было чуток побольше и фпс был заметно приятнее.
Однако и цена картриджа получилась кусучей - $100, так что даже зародилась идея выпускать чип как переиспользуемый картриджами модуль - но всё так быстро развивалось, что эта идея была откинута.
Однако возможно в том числе впечатление от этой идеи повлияло на следующий неудачный ход сеги - выпуск расширения консоли в виде Sega 32X. Но это уже совсем другая и печальная история.

Правка: 14 окт. 2017 12:02

innuendoПостоялецwww15 окт. 201712:51#89
=A=L=X=

Давно пришла пора за 32-битные (MIPS/PowerPC) рассказать

Страницы: 1 2 3 4 5 6 7 8 9 Следующая

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

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