[Перевод] История реализации обратной совместимости с PS1 на Sony Playstation 2

6acsstyswog5uds-ohczbgm9rwe.jpeg


4 марта мы отметили юбилейную дату — прошло 20 лет после выпуска PlayStation 2 в Японии, за которым в том же 2000 году последовали продажи в Европе и Северной Америке. Без сомнения, всевозможные игровые медиа будут публиковать списки и ретроспективы в память одной из самых успешных и значимых с точки зрения культуры консолей. Скорее всего, в основном внимание будет сосредоточено на множестве уникальных и разнообразных игр, поспособствовавших превращению консоли в такую мощную силу, но не стоит забывать и об одном из фундаментальных столпов системы: обратной совместимости с подавляющим большинством игр из библиотеки первой PlayStation.

Эта особенность, которая ранее в основном была присуща только портативным консолям Nintendo и некоторым старым системам Sega, позволила создать ощущение связи поколений оборудования, которое до этого не часто возникало в мире консолей. Она дала PS2 фору, которой конкуренты могли только завидовать. Это стало наследием, в разной степени сохранявшимся во всех последующих системах Sony до PlayStation 4, когда Джим Райан в интервью Time произнёс знаменитую фразу: «Да кто будет в это играть?», отказавшись удовлетворять запрос потребителей в такой технологии.

Как же быстро поменялась ситуация в этом отношении.

Излишне говорить, что благодаря обеспечению компанией Microsoft обратной совместимости с Xbox и Xbox 360, ставшей важным аргументом к покупке Xbox One, отношение Sony к этой потребности изменилось: теперь обе компании стремятся в той или иной форме реализовать в своих следующих консолях обратную совместимость. Разумеется, все эти усилия должны были с чего-то начаться, и для Sony начало было положено бывшим инженером компании, о котором вы, скорее всего, никогда не слышали: Тэцуи Ииды (Tetsua Iida). История Ииды любопытна: на него возложили ответственность разработки обратной совместимости PS2 всего через несколько лет после прихода в компанию, и в этой работе он почти новичком. В 2018 году он написал серию постов, в которой описывается мучительный путь реализации этой функциональности, пройденный им практически в одиночку. К 20-й годовщине японского выпуска PS2 я с удовольствием представляю свой перевод этих постов. Основная часть содержимого осталась неизменной, в том числе и использованные изображения, однако в некоторых разделах я привёл дополнительные уточнения, полученные непосредственно у автора. Также посты были немного переформатированы, чтобы легче воспринимались как один пост вместо пяти исходных.

Как бы то ни было, я считаю честью, что мне предоставилась возможность поделиться с вами этой практически забытой, но очень важной историей, ведь сегодня обратная совместимость и сохранение игр в целом важны для нас, как с культурной, так и с научной точек зрения. Хотя фундаментальная концепция была придумана не PS2, работа Ииды определённо стала важным катализатором её популяризации в сознании большинства игроков. Она позволила сохранять актуальность и доступность истории игр, не прибегая к эмуляции на PC. Без его непосредственного участия тысячи игр для PS1 не получили бы второго шанса на жизнь в новом тысячелетии, и игровой индустрии пришлось бы потратить больше времени на изучение своей истории, нашедшей своё место и в настоящем, и в будущем.

Том Джеймс, японско-английский переводчик


b8707e8dd003f2b515795a071e791e87.jpg


В 1996 году я устроился в Sony Computer Entertainment в рамках второй волны найма недавно выпустившихся студентов. В то время отдел исследований и разработок SCE состоял примерно из 50 человек. Его возглавлял Кен Кутараги, а ребята вроде меня находились в самом низу иерархической лестницы. Если не ошибаюсь, меня наняли сразу после того, как Square вошла в список сторонних разработчиков Sony. Примерно в то время, когда выходила Final Fantasy VII, у меня была возможность увидеть катсцены из неё. Как и многие, я до сих пор ярко вспоминаю шок от увиденной преждевременной кончины Айрис…

Насколько помню, моей первой задачей после прихода в SCE стало создание кода конвертера видео, получавшего на входе файл видео и применявшего к нему фильтры. Это приложение стало первой моей профессионально написанной программой. Суть в том, что когда я пришёл в отдел, то был самым бесполезным его сотрудником. И я не преувеличиваю. У меня не было реальных навыков проектирования электрической техники и я даже не знал, как запускать Windows 3.1, не говоря уж о написании программ. Даже сегодня я не понимаю, что руководство Sony во мне увидело и почему решило меня нанять.

К счастью, благодаря проводимой в компании программе у меня появилась возможность научиться программировать компьютеры. Мне легко было усваивать материал, и после этого обучения у меня возникло ощущение, что я могу запрограммировать что угодно. Завершив обучение, я занимался разной всячиной, мне поручали всевозможную работу, от изучения эмуляторов CD до моделирования конвертеров данных, libc и многого другого. Примерно в 1998 году весь наш отдел позвали на короткое совещание о следующем поколении системы PlayStation.

После этого отдел исследований и разработок разделили на две команды. Одна команда продолжила работать над актуальным тогда железом первой PlayStation, а другая занялась следующим поколением. Я всегда любил пробовать новое, поэтому понимал, что хочу работать во второй команде. Кажется, я проходил собеседование на поступление, потому что позже, когда меня направили в неё, я был в восторге.

4d24170d069e16417259f1d796c14819.jpg


Как только я перешёл в команду разработки PlayStation 2, мне поручили задачу реализации возможности запуска на новой системе игр для PS1. В то время нормой было то, что старые игры невозможно запускать на новых консолях, но SCE хотела переломить эту тенденцию, что, по-моему мнению, было со стороны компании дальновидным решением. Учитывая то, что в то время я работал в компании всего несколько лет, мне очень польстило то, что мне поручили работу над столь важной задачей.

Когда было принято решение о реализации обратной совместимости PS2 с играми для PS1, уже существовал план использования основного процессора PS1 как процессора ввода-вывода для нового оборудования PS2. Однако тонкость заключалась в том, что никакое другое оборудование PS1 не планировали больше использовать, и это означало, что всё остальное придётся эмулировать программно. До этого момента я работал только над разработкой ПО, однако мне было поручено написать эмулятор для SPU консоли PS1, то есть для её звуковой системы.

Звуковой чип PS2 состоит из двух частей: ядра и цифрового сигнального процессора (DSP). Опытный член команды, работавший над созданием звуковой системы, занялся эмуляцией DSP, а мне поручили работу с ядром. Для этого мы заняли помещение в комнате офиса субподрядчика, и изолировались от остального мира, чтобы писать весь необходимый код. В комнате не было комнат, и я помню, что в процессе работы мы часто спорили с моим коллегой. Однако всё было не так уж плохо, в результате совместной работы мы стали очень близкими друзьями.

Не помню точно, как именно мы трудились, но однажды наша работа была бесцеремонно прервана. Как выяснилось, звуковой чип PS1 будет в конечном итоге добавлен в список оборудования PS2, и это означало, что всю нашу работу можно было выкинуть в мусор.

cc075be164f365c0f85e9850db91878c.gif


Эмулятор SPU, который мы писали, оказался бесполезным, из-за чего наша работа зависла в воздухе, ведь использование звукового чипа PS1 не означало отказа от собственного нового звукового процессора PS2. Мы размышляли о том, что нам придётся делать дальше, например, писать тестовые векторы для нового звукового процессора. Однако моё новое задание оказалось огромным сюрпризом.

Мне поручили задачу эмуляции графического процессора PS1, и это сильно сбило меня с толку. Этим уже должен был заниматься кто-то другой, и когда я спросил, что происходит, мне сказали, что этот человек увольняется из компании и я должен без отговорок продолжить его работу. Понятно, что переход от работы со звуком на графику стал серьёзным испытанием для меня. Но в конечном итоге это было неважно, ведь меня никто не спрашивал. Как бы я к этому ни относился, мне пришлось выполнять приказ.

Я не хочу сказать, что воспринимал эту задачу, как невозможную. Я видел эмуляторы как своего рода конвертеры, получающие команды, предназначенные для старых процессоров, и транслирующие их в код, который может понять и выполнить новый процессор. В этом смысле, даже несмотря на то, что звуковое и графическое оборудование имеет отличия, в целом они занимаются только передачей команд. Всё, что делает эмулятор — это изменяет вид и поток этих команд. Если эмулятор полностью протестирован, то в конечном итоге он должен заработать, хоть на практике это и сложно будет реализовать.

К тому моменту, когда мне передали работу по эмуляции GPU, предыдущий разработчик, к счастью, уже заложил базовый фундамент, поэтому мне не пришлось начинать с самого начала. Поэтому в первую очередь мне нужно было разобраться в спецификациях GPU и PS1, и PS2. После этого я приступил к реализации отсутствующих инструкций, потому что изначально я пытался сфокусироваться на перепрограммировании команд GPU консоли PS1.

Первой игрой для PS1, запустившейся в эмуляторе на PS2, стала Ridge Racer. Она была выпущена одновременно с выпуском PS1, поэтому казалось очень важным, что её следует запустить первой из всей библиотеки игр системы. Когда я включил устройство, то понял важность того, чтобы она оказалась первой эмулируемой на PS2 игрой.

Первоначальные результаты были, мягко говоря, далеко не идеальны. Например, начинавшая гонку девушка рендерилась в виде мозаики, а не спрайта. Кроме того, при завершении круга экран становился розовым. Тем не менее, меня порадовало уже то, что игра вообще запустилась. Несмотря на то, что на самом деле эмуляровался только GPU, тогда я понял, что мы сможем добиться на PS2 обратной совместимости с PS1 на таком уровне программной эмуляции.

a64b1a413a357d361099656747f3ecdc.gif


Ранним утром 2 марта 1999 года я стоял за кулисами сцены Tokyo International Forum, где позже в тот же день на PlayStation Meeting 1999 должны были официально объявить о разработке PlayStation 2. Моя задача заключалась в демонстрации обратной совместимости консоли с PS1 после объявления об этой функции во время презентации.

Я был наготове с ночи перед подготовкой к мероприятию. Уже прошло несколько месяцев после первого запуска Ridge Racer и в разработке эмулятора GPU был достигнут большой прогресс. Теперь на нём можно было запускать многие игры для PS1, и лучшей из них была Crash Bandicoot: Warped. По этой причине она была выбрана для демонстрации функций обратной совместимости PS2. Существовала только одна проблема: иногда она зависала при эмуляции.

Не нужно говорить, что возникли бы серьёзные проблемы, если бы игра зависла посередине демо на глазах такой большой аудитории. К сожалению, мне не удалось найти причины этих сбоев. Всё, что удалось выяснить — что пока Крэш продолжает двигаться, игра по какой-то причине остаётся стабильной. Зная об этом, я не спал всю ночь, бесконечно играя на комплекте разработки PS2. К счастью, я был не одинок, со мной рядом находился ещё один человек, помогавший в прохождении игры. Передача видео на наш монитор была настроена так, что на конференции мы могли переключиться на большой экран на сцене одним нажатием кнопки. Как вы могли догадаться, я поигрался с этим переключателем, и это было очень интересно. Мы не могли просто запустить игру утром, потому что существовала вероятность, что не загрузится сам эмулятор и у нас не хватит времени починить его на месте. Поэтому, как бы ни удивительно это звучало, после запуска оказалось безопаснее не выключать систему всю ночь.

К счастью, эта ночь прошла без инцидентов. Мероприятие приближалось, и система продолжала работать. Важность этой конференции было невозможно переоценить. Её посетил сам генеральный директор Sony Нобуюки Идеи, чтобы оказать нам поддержку. Демонстрировались технологические демо, показывающие мощь Emotion Engine и Graphics Synthesizer системы PS2. Из-за кулис я не мог толком рассмотреть происходящее., но видел, что люди в зале реагируют на презентацию позитивно. Всё шло по плану. Наконец настало время заявления об обратной совместимости консоли.

Честно говоря, я почти не помню того, что происходило в эти мгновения. Планировалось, что во время демо Crash Bandicoot я буду играть обычным образом, перепрыгивать через препятствия и проходить уровень. Но когда настало время демонстрации, у меня возникли большие проблемы с прохождением, и я постоянно натыкался на одно и то же препятствие на уровне. После этого мои воспоминания совершенно пусты. Я даже не могу сказать, получилось ли у меня пройти дальше.

Однако, в конечном итоге всё, похоже, прошло гладко, потому что, несмотря на мою плохую демонстрацию, объявление было встречено аплодисментами. Все говорили, что мероприятие имело большой успех.

0b142fcf0b040b309a67427795e4e78a.jpg


PlayStation 2 была выпущена в Японии 4 марта 2000 года. Работа над эмулятором PS1 была в целом завершена примерно к Новому году, если я не ошибаюсь. В конце концов, нашлось несколько игр, которые не удалось заставить работать правильно, из-за чего компания выпустила публичный «чёрный список» игр для PS1, в которые игроки не смогут поиграть на новой консоли.

После выпуска системы в Японии дело дошло и до Северной Америки и Европы; естественно, что игры этих регионов для PS1 тоже поддерживались эмулятором. Незадолго перед выпуском региональных версий я приезжал в американский и европейский офисы Sony, чтобы помочь в отладке, и это был мой первый опыт поездки за рубеж. В конечном итоге PS2 оказалась не на 100% совместимой с каталогом PS1, однако поддерживала почти все игры. Вспоминая свою работу сегодня, я считаю, что это было одним из самых важных заданий за всю мою карьеру.

Кен Кутараги поставил перед своей командой высокую планку, он говорил нам, чтобы мы всегда измеряли качество нашей работы относительно наилучшего уровня в своём классе. Когда я думаю о том, что в моей жизни соответствовало этой планке, то первое, что вспоминается — это моя работа над обратной совместимостью с PS1. Вот настолько я ею горжусь.

Скажу честно — возможно, мне не удалось бы справиться с этим в одиночку, и во время работы мне помогало множество людей. Если бы с этим не справился я, это сделал бы кто-то другой. Тем не менее, возможность наблюдать такой масштабный проект до его завершения наполняет меня огромной гордостью. Я могу только надеяться, что за мою жизнь у меня появится ещё одна подобная возможность.

© Habrahabr.ru