Как стать автором
Обновить

Архитектура первой Playstation: игры, ОС, звук

Время на прочтение6 мин
Количество просмотров9.9K
Автор оригинала: Rodrigo Copetti
Часть первая: центральный процессор

Часть вторая: графика


Звук


Звуком занимается фирменный Sound Processing Unit (SPU) компании Sony. Этот чип поддерживает огромное количество каналов (24) с 16-битными сэмплами ADPCM (более эффективной версии хорошо известного PCM-сэмплирования) и частотой дискретизации 44,1 кГц (качество Audio CD).

Также этот чип обладает следующими возможностями:

  • Модуляция высоты звука: как понятно из названия, игры могут автоматически изменять высоту звука сэмплов, не требуя дополнительных сэмплов. Это полезно для секвенцирования музыки.
  • Частотная модуляция: можно назначать голоса, изменяющие частоту других. Похоже на FM-синтез.
  • ADSR Envelope: набор свойств для амплитудной модуляции.
  • Лупинг: многократное воспроизведение звукового фрагмента.
  • Цифровая реверберация: симуляция воспроизведения сэмпла в определённой атмосфере, чтобы усилить у игрока ощущение погружения.

512 КБ DRAM (называемой «Sound RAM») используется в качестве аудиобуфера. Эта память доступна из CPU (только через DMA) и CD-контроллер. Играм доступно всего 508 КБ для хранения сэмплов, остальное зарезервировано процессором SPU под обработку музыки Audio CD. Если активирована реверберация, эта величина становится ещё меньше.

CD-контроллер также может отправлять сэмплы непосредственно на аудиомикшер без промежуточного хранения в аудиобуфере или вмешательства CPU. Сэмплы можно сжимать при помощи кодирования «XA», которое SPU способен декодировать на лету.

Эпоха потоковой передачи


Как и на консоли Saturn, игры больше не зависели от секвенцирования музыки или заранее заданных форм сигнала, а благодаря доступному на CD-ROM объёму разработчики могли хранить полностью готовые сэмплы и просто передавать их потоково в аудиочип.

Ввод-вывод


У консоли есть два порта ввода-вывода (Serial и Parallel), к которым можно подключать дополнительные устройства. Однако в более новых версиях консоли их убрали из-за того, что они не использовались и потенциально могли применяться для взлома системы защиты от копирования.

Подсистема CD


Интересной частью консоли является блок, управляющий CD-приводом, его можно даже считать отдельным компьютером, расположенным внутри PlayStation.


Схема подсистемы CD

Эта подсистема состоит из следующих компонентов:

  • DSP: управляет двигателем и лазером, обрабатывает радиочастотный сигнал, поступающий от лазера.
  • Sub-CPU: микропроцессорный комплект, состоящий из микроконтрллера Motorola 68HC05, 512 байт ОЗУ и 16 КБ ROM. По сути, Sub-CPU выполняет локальную программу, хранящуюся в ROM, и управляет DSP. Программа Sub-CPU реализует меры защиты от копирования и они принудительно применяются, вне зависимости от того, «нравится» ли это основному CPU.
  • CD-контроллер: посредник между подсистемой CD и остальной частью консоли, получающий команды от основного CPU (в стиле FIFO) и запускающий прерывания после определённых событий. В роли контроллера этот чип общается с Sub-CPU и получает данные CD от DSP. Более того, контроллер содержит блок DMA и подключён к SPU, что позволяет выполнять прямую потоковую передачу данных.
  • 32 КБ SRAM, подключённых к контроллеру: предположительно, используются в качестве буфера для считывания данных с диска.

Эта подсистема чем-то напоминает обычное устройство для чтения CD, которое в те времена было почти в каждом доме, за исключением изменений, которые Sony внедрила в программу Sub-CPU для выполнения антипиратских проверок.

Разъёмы на передней панели


Разъёмы контроллеров и карт памяти электрически идентичны, поэтому адрес каждого из них жёстко задан. Кроме того, Sony изменила физическую форму разъёмов, чтобы избежать случайных ошибок.

Обмен данными с этими устройствами происходит через последовательный интерфейс. Передаваемые от консоли команды доставляются в один из двух разъёмов (или «mem. card 0» и «controller 0», или «mem. card 1» и «controller 1»). Далее оба устройства отвечают своими уникальными идентификаторами, что позволяет консоли заниматься конкретным типом устройства (картой памяти или контроллером).

Операционная система


Система содержит 512 КБ ROM, в котором хранится «BIOS». Эта программа выполняет множество задач. в том числе занимается процессом запуска, отображением оболочки пользователя и предоставлением набора процедур ввода-вывода.

BIOS/ядро


BIOS — неотъемлемая зависимость для игр, потому что эта программа запускает их с CD-привода. Более того, BIOS служит в качестве «посредника» во взаимодействии с оборудованием консоли. Последнее похоже на то, что IBM реализовала в своей IBM PC BIOS, что мотивировало разработчиков использовать стандартную таблицу прерываний (содержащую процедуры ввода-вывода) вместо платформозависимых портов ввода-вывода.

BIOS консоли PS1 предоставляет следующие процедуры:

  • Команды для привода CD-ROM.
  • Операции с файловой системой (с CD-ROM и карты памяти).
  • Многопоточность.
  • Стандартные функции C (работа со строками, с памятью и т. п.).

Так как доступ к BIOS ROM очень медленный (он подключён к 8-битной шине данных), API упакованы в виде ядра и копируются в основную ОЗУ при запуске. Потому под это ядро зарезервировано 64 КБ основной ОЗУ. Кстати это ядро (Kernel) называют PlayStation OS.

Процесс запуска


Вектор сброса CPU находится по адресу 0xBFC00000, указывающему на BIOS ROM.


Знаменитая заставка после включения консоли


Логотип PlayStation, отображаемый после вставки диска с подлинной игрой


Оболочка, отображаемая, когда диск не вставлен

Аналогично процессу запуска Saturn, после получения питания PS1 выполняет следующие действия:

  1. Ищет BIOS ROM и выполняет процедуры для инициализации оборудования.
  2. Загружает Playstation OS.
  3. Отображает экран заставки.
  4. Если вставлен CD, контроллер CD-ROM проверяет его подлинность:
    • Если подлинный → контроллер разрешает считывать содержимое.
      1. CPU ищет «SYSTEM.CNF» и продолжает выполнение из него.
    • Если поддельный → CPU отображает сообщение об ошибке.
  5. Если CD не вставлен, то CPU отобразит оболочку. Теперь управление передано пользователю.

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

Игры


Программы имеют все возможности, предоставляемые носителем CD: большой объём хранения (640 МБ), хорошее качество звука и «не особо медленная» скорость чтения благодаря приводу 2x.

Экосистема разработки


В официальном SDK есть библиотеки C, скомпонованные в процедуры BIOS для доступа к оборудованию. Это основной фактор, позволивший эмулировать PS1 на широком наборе платформ.

Наряду с SDK компания Sony также распространяла специализированное оборудование наподобие DTL-H2000: ISA-карты на два разъёма, содержащей внутренние устройства и ввод-вывод PS1, плюс дополнительные схемы для отладки. Эта плата имеет доступ к жёсткому диску хоста и может выполнять ПО PS1 без ограничений. ПО и драйверы, необходимые для обмена информацией с картой, работают на PC с Windows 3.1 или 95.

Антипиратская защита и региональная блокировка


Как и в любом оптическом носителе, для получения данных с CD используется лазерный луч, считывающий pits (нули) и lands (единицы) с дорожки на диске. Обычные диски плоские не на 100% и часто имеют на дорожках небольшие колебания. Эти дефекты совершенно незаметны при чтении, потому что лазеры могут автоматически калибровать себя в процессе чтения.

Именно на этой особенности Sony основала свою защиту от копирования: Sub-CPU позволяет считывать диски, Table of Contents (TOC) которых записана на заданной частоте, неформально называемой Wobble Groove. Она используется только при мастеринге и её невозможно воссоздать на обычных устройствах прожигания дисков. TOC находится на внутренней части CD (называемой областью «Lead-In»), она сообщает лазеру, как ориентироваться по диску и многократно повторяется для защиты от сбоев.

В TOC игры для PS1 встроена одна из следующих строк символов:

  • SCEA → Sony Computer Entertainment of America.
  • SCEE → Sony Computer Entertainment of Europe.
  • SCEI → Sony Computer Entertainment of Japan.

Как можно понять, при помощи этой методики реализуется и региональная блокировка.

Победа над защитой


Однако эта проверка выполняется только при запуске, поэтому замена диска вручную после прохождения этой проверки позволяет обойти защиту… с риском повреждения привода. Позже некоторые игры взяли ситуацию в свои руки и часто повторно инициализировали привод в процессе игры, чтобы проверка выполнялась заново; это было сделано в попытках помешать пользователям выполнять «трюк с подменой».

Также в консоль припаивались небольшие платы, имитирующие сигнал Wobble Groove. такие платы назывались модчипами и, несмотря на свою спорную законность, имели невероятный успех.

Возмездие


Угрозой издатели считали и применение эмуляторов, поэтому в некоторые игры встраивались собственные проверки (в основном контрольные суммы) для борьбы с любыми видами неавторизованного использования и модификации.

Одна из проверок, о которых мне рассказывали, заключалась в намеренной повторной инициализации привода с последующим считыванием определённых секторов, которые не проходят проверку Wobble Groove. Если эта операция всё равно позволяла разблокировать привод, игра (по-прежнему находящаяся в ОЗУ) отображала сообщение о защите от пиратства. Стоит заметить, что такое решение может также повлиять на модифицированные консоли с подлинными играми.

Позже Sony создала библиотеку Lybcrypt, усилившую защиту от копирования при помощи двух методик:

  • Аппаратной — контрольные суммы секторов сохранялись в подканалы диска.
    • В подканалах CD-ROM традиционно хранятся метаданные, в основном для управления приводом. Они недоступны пользователю и обычные устройства считывания редко позволяют их перезаписывать.
  • Программной — в разных точках игры встраивался набор процедур, получающих значения контрольных сумм и смешивающих их с другими. Так компания пыталась бороться и с эмуляторами, и с модчипами.

Источники


Общая информация



Ввод-вывод



Операционная система



Игры


Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Публикации

Истории

Работа

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань