Возможно вы искали: 'Earthworm Jim 2'

May 15 2025 19:12:13
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Игровая приставка Sony PlayStation (Часть 2)

Игровая приставка Sony PlayStation (Часть 2)

Сопроцессор графических вычислений
Перейдем к рассмотрению второго сопроцессора, называемого сопроцессором графических вычислений (Graphics Transformation Engine, GTE).
Он применяется при любых расчетах трехмерной графики, таких как перспективная проекция, вращение и масштабирование объектов, вычисление освещенности и др. Для действий над векторами и матрицами предназначен специальный набор операций, которые сопроцессор выполняет гораздо быстрее центрального процессора приставки. Сопроцессор подключен к центральному процессору системы как СОР2 и не занимает адресов в пространстве CPU. Для работы с ним в системе команд центрального процессора предусмотрены специальные команды.
Знакомство с трехмерной графикой
Прежде чем говорить о принципах функционирования данного сопроцессора, системе команд и назначении внутренних регистров, напомним основные соотношения, используемые в трехмерной графике. Конечно, здесь мы представим лишь базовые понятия, дополнительную информацию можно найти в соответствующей литературе.
Чтобы определить местоположение точки в трехмерном пространстве, обычно используют декартову систему координат, изображенную на рис. 4.3. В этой системе координат любая точка в пространстве может быть определена набором из трех значений, отражающих ее позицию вдоль каждой из осей. Обычно они указываются в угловых скобках, например .

Рис. 4.3. Декартова система координат в трехмерном пространстве
Точка - это базовый примитив трехмерной графики, но строить изображение из точек слишком утомительно. Поэтому нам потребуются вершины и грани.
Вершины (vertices) представляют собой точки, которые используются для задания положения таких объектов, как грани и сети, в трехмерном пространстве. Вершины, подобно точкам, указывают местонахождение, однако сами невидимы.
Грань (face) - это плоский многоугольник, задаваемый своими вершинами. Каждая вершина устанавливает угол грани. Все вершины грани должны находиться в одной и той же плоскости, формируя плоскую грань. Грань, вершины которой принадлежат разным плоскостям, является неправильной, и нарисовать ее нереально.
Простейшая грань определяется тремя вершинами. Получившаяся треугольная грань удобна для работы: во-первых, задать три вершины так, чтобы они не принадлежали одной и той же плоскости, невозможно, следовательно, грань всегда будет правильной; во-вторых, графический процессор использует именно треугольные грани, и, если вы
укажете более сложные грани, для вывода на экран их все равно придется разделять на треугольники.
Сеть (mesh) - это набор соединенных гранен, как правило, описывающий один объект в сцене. Сеть может иметь одну или много граней.
Попробуем смоделировать трехмерные объекты, создавая грани и объединяя их в сеть. Для этого нужно познакомиться с базовыми преобразованиями трехмерных объектов. Преобразования рассматриваются применительно к отдельной точке. Если вы захотите выполнить такие операции для грани или сети, потребуется преобразовать каждую из вершин объекта.
Вращение выполняют, умножая определяющий точку вектор на матрицу вращения. Матрица вращения - это матрица размером 3x3, которая состоит из трех единичных векторов, ортогональных друг к другу. Сведения о том, каким образом получают матрицы и как выполняется умножение вектора на матрицу, можно почерпнуть из учебника математики. Здесь мы приведем только конечный результат:

Чтобы выполнить вращение вокруг нескольких осей одновременно, следует перемножить соответствующие матрицы, причем результат зависит от порядка множителей. К сожалению, сопроцессор графических вычислений не в состоянии вычислять тригонометрические функции - этим должен заниматься центральный процессор системы.
Перемещение объекта осуществляется путем сложения вектора, задающего вершину, с вектором, определяющим направление и дальность передвижения. Еще раз напоминаем, что в операциях с матрицами и векторами очень важен порядок их выполнения. Изменив последовательность операндов, вы получите совсем другой результат.
Теперь, ознакомившись с основными математическими понятиями, перейдем к рассмотрению их реализации в сопроцессоре игровой приставки SONY PLAYSTATION.
Регистры сопроцессора графических вычислений
Сопроцессор графических вычислений игровой приставки SONY PLAYSTATION имеет 64 внутренних регистра (32 управляющих и 32 регистра данных), которые используются при расчетах. Рассмотрим сначала управляющие регистры, предназначенные для хранения различных констант.
Регистр 0
Имя: R11R12.
Назначение.
Элементы 11 и 12 матрицы вращения. Элемент 12 занимает разряды D32 - D16, а элемент 11 - разряды D15 - D0. Числа хранятся в формате (1, 3, 12): один знаковый разряд, три разряда для целой части числа и 12 разрядов для дробной.
Регистр 1
Имя: R13R21.
Назначение.
Элементы 13 и 21 матрицы вращения. Элемент 21 занимает разряды D32 - D16, а элемент 13 - разряды D15 - DO. Числа хранятся в формате (1, 3, 12).
Регистр 2
Имя: R22R23.
Назначение.
Элементы 22 и 23 матрицы вращения. Элемент 23 занимает разряды D32 - D16, а элемент 22 - разряды D15 - D0. Числа хранятся в формате (1, 3, 12).
Регистр 3
Имя: R31R32.
Назначение.
Элементы 31 и 32 матрицы вращения. Элемент 32 занимает разряды D32 - D16, а элемент 31 - разряды D15 - D0. Числа хранятся в формате (1, 3, 12).
Регистр 4
Имя: R33.
Назначение.
Элемент 33 матрицы вращения. Занимает разряды D15 - D0. Старшие 16 разрядов регистра не используются. Число хранится в формате (1, 3, 12).
Регистр 5
Имя: TRX.
Назначение.
Элемент X вектора перемещения. Число хранится в формате (1, 31, 0).
Регистр 6
Имя: TRY.
Назначение.
Элемент Y вектора перемещения. Число хранится в формате (1, 31, 0).
Регистр 7
Имя: TRZ.
Назначение.
Элемент Z вектора перемещения. Число хранится в формате (1, 31, 0).
Регистр 8
Имя: L11L12.
Назначение.
Элементы 11 и 12 матрицы освещения. Элемент 12 занимает разряды D32 - D16, а элемент 11 - разряды D15 - DO. Числа хранятся в формате (1, 3, 12): один знаковый разряд, три разряда для целой части числа и 12 разрядов для дробной.
Регистр 9
Имя: L13L21.
Назначение.
Элементы 13 и 21 матрицы освещения. Элемент 21 занимает разряды D32 - D16, а элемент 13 - разряды D15 - D0. Числа хранятся в формате (1,3, 12).
Регистр 10
Имя: L22L23.
Назначение.
Элементы 22 и 23 матрицы освещения. Элемент 23 занимает разряды D32 - D16, а элемент 22 - разряды D15 - D0. Числа хранятся в формате (1,3, 12).
Регистр 11
Имя: L31L32. Назначение.
Элементы 31 и 32 матрицы освещения. Элемент 32 занимает разряды D32 - D16, а элемент 31 - разряды D15 - DO. Числа хранятся в формате (1, 3, 12).
Регистр 12
Имя: L33.
Назначение.
Элемент 33 матрицы освещения. Занимает разряды D15 - D0. Старшие 16 разрядов регистра не используются. Число хранится в формате (1,3,12).
Регистр 13
Имя: RBK.
Назначение.
Красная составляющая цвета фона. Число хранится в формате (1, 19, 12).
Регистр 14
Имя: GBK.
Назначение.
Зеленая составляющая цвета фона. Число хранится в формате (1, 19, 12).
Регистр 15
Имя: ВВК.
Назначение.
Синяя составляющая цвета фона. Число хранится в формате (1, 19, 12).
Регистр 16
Имя: LR1LR2.
Назначение.
Элементы 1 и 2 красной составляющей цветовой матрицы освещения. Элемент 2 занимает разряды D32 - D16, а элемент 1 - разряды D15 - D0. Числа хранятся в формате (1, 3, 12): один знаковый разряд, три разряда для целой части числа и 12 разрядов для дробной.
Регистр 17
Имя: LR3LG1.
Назначение.
Элемент 3 красной составляющей и элемент 1 зеленой составляющей цветовой матрицы освещения. Зеленая составляющая занимает разряды D32 -D16, а красная - разряды D15 - D0. Числа хранятся в формате (1, 3, 12).
Регистр 18
Имя: LG2LG3.
Назначение.
Элементы 2 и 3 зеленой составляющей цветовой матрицы освещения. Элемент 3 занимает разряды D32 - D16, а элемент 2 - разряды D15 - D0. Числа хранятся в формате (1,3, 12).
Регистр 19
Имя: LB1LB2.
Назначение.
Элементы 1 и 2 синей составляющей цветовой матрицы освещения. Элемент 2 занимает разряды D32 - D16, а элемент 1 - разряды D15 - D0. Числа хранятся в формате (1, 3, 12).
Регистр 20
Имя: LB3.
Назначение.
Элемент 3 синей составляющей цветовой матрицы освещения. Занимает разряды D15 - D0. Старшие 16 разрядов регистра не используются. Число хранится в формате (1, 3, 12).
Регистр 21
Имя: RFC. Назначение..
Красная составляющая общей освещенности. Число хранится в формате (1, 27, 4).
Регистр 22
Имя: GFC. Назначение.
Зеленая составляющая общей освещенности. Число хранится в формате (1, 27, 4).
Регистр 23
Имя: BFC.
Назначение
Синяя составляющая общей освещенности. Число хранится в формате (1, 27, 4).
Регистр 24
Имя: OFX Назначение.
Смещение экрана по оси X.
Регистр 25
Имя: ОFY.
Назначение.
Смещение экрана по оси Y.
Регистр 26
Имя: Н.
Назначение.
Расстояние до плоскости проекции. Число хранится в разрядах D16 - D0 в формате (0, 16, 0).
Регистр 27
Имя: DQA.
Назначение.
Параметр, задающий глубину сцены. Число хранится в разрядах D16 - DO в формате (0, 7, 8).
Регистр 28
Имя: DQB.
Назначение.
Параметр, задающий глубину сцены. Число хранится в разрядах D16 - DO в формате (0, 7, 8).
Регистр 29
Имя: ZSF3.
Назначение.
Множитель Z3, обычно равен 1/3. Число хранится в разрядах D16 - D0 в формате (1, 3, 12).
Регистр 30
Имя: ZSF4,
Назначение.
Множитель Z4, обычно равен 1/4. Число хранится в разрядах D16 - D0 в формате (1, 3, 12).
Регистр 31
Имя: FLAG.
Назначение.
Состояние отдельных разрядов регистра сообщает о результате выполнения последней операции сопроцессора и о возникновении ошибок.
Теперь рассмотрим назначение 32 регистров данных. Эти регистры служат для хранения данных, предназначенных для обработки, и результатов.
Регистр 0
Имя: VXY0.
Назначение.
В регистре хранятся значения координат х и у для первого вектора. Координата у записывается в разряды D31 - D16, а координата х - в разряды D15 - D0. Числа могут храниться в формате (1, 3, 12) или (1, 15, 0).
Регистр 1
Имя: VZ0.
Назначение.
В регистре хранится значение координаты z для первого вектора. Координата записывается в разряды D15 - D0 в формате (1, 3, 12) или (1, 15, 0). Старшие 16 разрядов регистра не используются.
Регистр 2
Имя: VXY1.
Назначение.
В регистре хранятся значения координат х и у для второго вектора. Координата у записывается в разряды D31 - D16, а координата х - в разряды D15 - D0. Числа могут храниться в формате (1, 3, 12) или (1, 15, 0).
Регистр 3
Имя: VZ1.
Назначение.
В регистре хранится значение координаты z для второго вектора. Координата записывается в разряды D15 - D0 в формате (1, 3, 12) или (1, 15, 0). Старшие 16 разрядов регистра не используются.
Регистр 4
Имя: VXY2.
Назначение.
В регистре хранятся значения координат х и у для третьего вектора. Координата у записывается в разряды D31 - D16, а координата х - в разряды D15 - D0. Числа могут храниться в формате (1, 3, 12) или в формате (1, 15, 0).
Регистр 5
Имя: VZ2.
Назначение.
В регистре хранится значение координаты z для третьего вектора. Координата записывается в разряды D15 - D0 в формате (1, 3, 12) или (1, 15, 0). Старшие 16 разрядов регистра не используются.
Регистр 6
Имя: RGB.
Назначение.
В регистре хранится код цвета. Разряды D31 - D24 не используются, в разрядах D23 - D16 содержится код для синей составляющей, в разрядах D15 - D8 -для зеленой и в разрядах D7 - DO - для красной.
Регистр 7
Имя: OTZ.
Назначение.
В младших 16 разрядах регистра хранится среднее значение z в формате (0, 15, 0). Регистр доступен только для чтения.
Регистр 8
Имя: IR0.
Назначение.
Регистр для промежуточного результата. В старших 16 разрядах содержится копия знакового бита, а в младших - число в формате (1, 3, 12).
Регистр 9
Имя: IR1.
Назначение.
Регистр для промежуточного результата. В старших 16 разрядах содержится копия знакового бита, а в младших - число в формате (1, 3, 12).
Регистр 10
Имя: IR2.
Назначение.
Pei истр для промежуточного результата. В старших 16 разрядах содержится копия знакового бита, а в младших — число в формате (1, 3, 12).
Регистр 11
Имя: IR3.
Назначение.
Регистр для промежуточного результата. В старших 16 разрядах содержится копия знакового бита, а в младших - число в формате (1, 3, 12).
Регистр 12
Имя: SXY0.
Назначение.
Элемент очереди для хранения экранных координат х и у. Координата у хранится в разрядах D31 -D16 в формате (1, 15, 0), а координата х — в разрядах D15 - D0 в аналогичном формате. Очередь работает по принципу FIFO, то есть сначала считывается первый записанный элемент.
Регистр 13
Имя: SXY1.
Назначение.
Элемент очереди для хранения экранных координат х и у.
Регистр 14
Имя: SXY2.
Назначение.
Элемент очереди для хранения экранных координат х и у.
Регистр 15
Имя: SXYP. Назначение.
Элемент очереди для хранения экранных координат х и у.
Регистр 16
Имя: SZ0.
Назначение.
Элемент очереди для хранения экранной координаты z. Она хранится в разрядах D15 - D0 в формате (0,16, 0) и всегда является положительной. Старшие разряды регистра не используются.
Регистр 17
Имя: SZ1.
Назначение.
Элемент очереди для хранения экранной координаты z.
Регистр 18
Имя: SZ2.
Назначение.
Элемент очереди для хранения экранной координаты z.
Регистр 19
Имя: SZP.
Назначение.
Элемент очереди для хранения экранной координаты z.
Регистр 20
Имя: RGB0.
Назначение.
Элемент очереди для хранения цветовых кодов. Формат хранения аналогичен используемому в регистре 6 (RGB).
Регистр 21
Имя: RGB1.
Назначение.
Элемент очереди для хранения цветовых кодов. Формат хранения аналогичен используемому в регистре 6 (RGB).
Регистр 22
Имя: RGB2.
Назначение.
Элемент очереди для хранения цветовых кодов. Формат хранения аналогичен используемому в регистре 6 (RGB).
Регистр 23
Имя: RES1.
Назначение.
Регистр не используется и недоступен для программ.
Регистр 24
Имя: МАСО.
Назначение.
Регистр хранения результата. Числа содержатся в формате (1, 31, 0).
Регистр 25
Имя: МАС1.
Назначение.
Регистр хранения результата. Числа содержатся в формате (1, 31, 0).
Регистр 26
Имя: МАС2.
Назначение.
Регистр хранения результата. Числа содержатся в формате (1, 31, 0).
Регистр 27
Имя: МАСЗ.
Назначение.
Регистр хранения результата. Числа содержатся в формате (1, 31, 0).
Регистр 28
Имя: IRGB.
Назначение.
Регистр ввода 15-разрядного кода цвета. В регистр записывается 15-разрядный код, при этом значение синей составляющей определяется разрядами D14 - D10, значение зеленой - разрядами D9 - D5, а значение красной - разрядами D4 -D0. Сразу после сохранения значения каждой составляющей цвета автоматически преобразуются в формат (1, 11, 4) и помещаются во внутренние регистры сопроцессора (IR1, IR2 и IR3). Регистр доступен только для записи.
Регистр 29
Имя: ORGB.
Назначение.
Регистр чтения 15-разрядного кода цвета. При чтении из этого регистра содержимое внутренних регистров IR1, IR2 и IR3 автоматически преобразуется в 5-разрядные коды для цветовых составляющих, из которых получается значение в формате, аналогичном используемому в регистре 28 (IRGB). Регистр доступен только для чтения.
Регистр 30
Имя: LZCS.
Назначение.
Регистр данных для счетчика ведущих нулей. Сюда записывается число в формате (1, 31, 0), а результат возвращается в регистре 31 (LZCR). Регистр доступен только для записи.
Регистр 31
Имя: LZCR.
Назначение.
Счетчик ведущих нулей. При чтении из этого регистра возвращается 6-разрядное число, которое указывает количество ведущих нулей в числе, записанном в регистр 30 (LZCS). Если число в регистре 30 отрицательно, то передается число ведущих единиц. Регистр доступен только для чтения.
После приведенного описания регистров сопроцессора графических вычислений игровой приставки SONY PLAYSTATION следует дать несколько пояснений. Во-первых, чтобы лучше разобраться с форматами хранения данных, нужно обратиться к рис. 4.4. Во-вторых, необходимо учитывать, что некоторые регистры образуют очереди. Работа с этими очередями ведется таким образом: когда вычисляется очередное значение, оно помещается в последний регистр очереди, а все элементы очереди

РИС. 4.4. Форматы данных для сопроцессора графических вычислений
сдвигаются на одну позицию к началу. Например, новое значение координат х и у будет помещено в регистр SXYP. Значение, которое здесь хранилось, копируется в регистр SXY2, значение из регистра SXY2 - в регистр SXY1 и значение из регистра SXY1 - в регистр SXY0.
Работа с сопроцессором графических вычислений
Ниже рассматриваются принципы взаимодействия ядра центрального процессора игровой приставки SONY PLAYSTATION и сопроцессора графических вычислений. С этой целью в систему команд центрального процессора введены шесть команд для обмена данными и одна команда для передачи сопроцессору кода выполняемой операции.
Команды LWC2 и SWC2 позволяют загружать данные из памяти в регистры данных сопроцессора и записывать содержимое этих регистров в память. Команды МТС 2 и MFC 2 предназначены для передачи чисел из регистров центрального процессора в регистры данных сопроцессора и обратно.
Обмен информацией между управляющими регистрами сопроцессора графических вычислений и регистрами центрального процессора осуществляется с помощью команд СТС2 и CFC2.
Команда СОР2 служит для пересылки сопроцессору команд, которые необходимо выполнить. После нее указывается 25-разрядный код команды сопроцессора графических вычислений.
Перед тем как центральный процессор обратится к сопроцессору графических вычислений, разряд 30 в регистре SR сопроцессора управления системой следует установить в 1, в противном случае обращение к сопроцессору вызовет возникновение исключения. Команды сопроцессора графических вычислений нельзя использовать в процедурах обслуживания исключений и запросов на прерывание.
Если очередная команда обращения к сопроцессору будет выполнена центральным процессором до того, как сопроцессор закончит обработку предыдущей команды, центральный процессор остановится, ожидая окончания работы сопроцессора.
Система команд сопроцессора графических вычислений
Ниже мы расскажем о системе команд сопроцессора. Знакомство начнем с формата команды, изображенного на рис. 4.5.
Любая команда представляет собой 25-разрядное двоичное число. В этом числе выделяется несколько полей, состояние разрядов в которых может влиять на местоположение операндов команды и алгоритм вычисления. Опишем поля более детально: sf - 0 - вычисления; 1 - вычисления со значениями из регистров IR; mх - 00 - умножение на матрицу вращения; 01 -умножение на матрицу освещенности; 10 -умножение на матрицу цвета; 11 - не используется;
v - 00 - операнд в векторе 10; 01 - операнд в векторе I1; 10 - операнд в векторе 12; 11 - операнд в регистре IR; cv — 00 - прибавление вектора перемещения TR; 01 - прибавление вектора фонового цвета ВК; 10 - прибавление вектора удаленного освещения FAR (работает неправильно); 11 -прибавление вектора отсутствует; Im - 0 - нет ограничений на результат; 1 - результат ограничен нулем. Более подробные сведения о системе команд сопроцессора графических вычислений игровой приставки SONY PLAYSTATION можно найти в Internet.
4.2.3. Адресное пространство
В этом разделе описывается распределение памяти, установленной в игровой приставке SONY PLAYSTATION. Блоки, рассмотрению которых посвящены следующие разделы, например видео память, здесь представлены очень кратко. ПЗУ, имеющееся в игровой приставке, и записанная в нем операционная система анализируются более развернуто, поскольку эти сведения необходимы для понимания функционирования основных узлов устройства.
Итак, в приставке SONY PLAYSTATION память применяется центральным процессором, видеопроцессором, звуковым процессором и процессором управления приводом CD-ROM.
К центральному процессору подключено ПЗУ, в котором записана операционная система, и 2 Мб I оперативной памяти, которые используются про-1 граммами. ПЗУ и ОЗУ вместе составляют основную память игровой приставки. Оперативная память располагается в самом начале адресного пространства (адреса 00000000h - 00200000h), однако часто в программах можно увидеть адрес, начинающийся с 80h. Дело в том, что центральный процессор преобразует логические 32-разрядные адреса

Рис. 4.5. Формат команды сопроцессора графических вычислений
в физические адреса установленной памяти. При этом адрес, начинающийся с 80h, разрешает работу кэш-памяти команд. Следовательно, память располагается и по адресам 80000000h- 80200000h. Первые 64 Кб задействуются ядром операционной системы, так что первый доступный для размещения программы адрес - 80010000h.
Регистры различных контроллеров игровой приставки включены в общее адресное пространство, где для них имеется отдельная область. Эти регистры не являются частью ОЗУ или ПЗУ, но при программировании работа с ними ничем не отличается от работы с памятью.
Видеопроцессор для хранения информации о формируемом изображении использует видео-ОЗУ объемом 1 Мб. Оно не является частью общего адресного пространства и доступно только через регистры видеопроцессора или посредством контроллера прямого доступа к памяти.
Звуковой процессор также применяет собственную память объемом 256 Кб, одна часть которой зарезервирована для звуковых данных, поступающих с CD-ROM, а другая хранит данные, необходимые внутренним схемам звукового процессора при формировании аудиосигналов.
Еще одно ОЗУ объемом 256 Кб подключено к контроллеру управления приводом CD-ROM. Эта память играет роль буфера, ускоряющего обращение к CD-ROM из программ.
Рассмотрим более подробно операционную систему, которая записана в ПЗУ, игровой приставки.
Операционная система SONY PLAYSTATION
Операционная система приставки SONY PLAYSTATION представляет собой 32-разрядную многозадачную операционную систему, предназначенную для управления аппаратурой игровой приставки, работы с файловой системой на компакт-диске и осуществления межпоточного взаимодействия в программах.
Вызовы функций операционной системы производятся через точку входа с адресом В0h. Номер функции передается через регистр с 1 центрального процессора. Таким образом, для обращения к функции операционной системы необходимо записать ее номер в регистр с 1 и выполнить команду
jal $000000В0.
Функция openevent
Номер: 08h. Параметры:
а0 - класс события;
a1 - спецификатор события;
а2 — режим события;
аЗ - адрес функции, которая будет выполняться при возникновении события.
Результат:
v0 - дескриптор события или -1, если произошла ошибка. Описание.
Данная функция создает структуру описателя события и добавляет ее в таблицу обрабатываемых событий. Параметры, помещаемые в регистры А0 - А2, рассматриваются ниже. Возвращаемый дескриптор события в дальнейшем используется при обращении к другим функциям.
Класс события определяет, какое устройство вызывает возникновение данного события. Старший байт задает группу событий:
FFh — события межпоточного взаимодействия;
F4h - события системы ввода/вывода;
F3h - пользовательские события;
F2h - счетчики;
F0h - события аппаратуры.
Младшие три байта позволяют более детально охарактеризовать событие в зависимости от его группы. Для событий, возникающих по сигналам от аппаратуры, возможны следующие значения:
F000000lh- прерывание по кадровому синхроимпульсу (VBLANK);
F0000002h - сигнал от видеопроцессора (CPU);
F0000003h - сигнал от дешифратора CD-ROM;
F0000004h - контроллер прямого доступа к памяти;
F0000005h - RTC0;
F0000006h - RTC1;
F0000007h - RTC2;
F0000008h- игровой пульт;
F0000009h- звуковой процессор;
F000000Ah - параллельный порт;
F000000Bh - последовательный порт;
F00000l0h- исключение;
F00000llh- карта памяти (memory card);
F0000012h- карта памяти (memory card);
F0000013h - карта памяти (memory card).
Для событий таймера в старшем байте, как уже упоминалось, содержится число F2h, а в младшем байте — номер канала таймера от 0 до 3.
Система ввода/вывода использует события, вызываемые картой памяти memory card с классом F4000001hH математической библиотекой с классом F4000002h.
Спецификатор служит для более точного определения действия, вызвавшего возникновение события. Наиболее часто применяются следующие спецификаторы:
0001h - счетчик равен нулю;
0002h - работа прервана;
0004h - конец ввода/вывода;
0008h - файл закрыт;
0010h - подтверждение приема команды;
0020h - выполнение команды завершено;
0040h - данные готовы;
0080h - конец данных;
0l00h - время истекло;
0200h - неизвестная команда;
0400h - конец буфера чтения;
0800h - конец буфера записи;
1000h - прерывание;
2000h - новое устройство; 4000h - команда syscall;
030lh - ошибка в библиотеке libmat'h;
0302h - неправильный диапазон в библиотеке
libmath
И наконец, режим события определяет тип вызываемого обработчика. Если этот параметр равен 1000h, обслуживается запрос на прерывание или исключение; если же параметр равен 2000h, сразу вызывается обработчик события.
Функция closeevent
Номер: 09h.
Параметры:
а0 - дескриптор события.
Результат:
v0 - 1 при удаче, 0 при ошибке. Описание.
Функция удаляет структуру описателя события из таблицы обрабатываемых событий.
Функция enableevent
Номер: 0Ch.
Параметры:
а0 - дескриптор события.
Результат:
v0 - 1 при удаче, 0 при ошибке. Описание.
Функция разрешает обработку события из таблицы, определяемого заданным дескриптором. Чтобы в программе могло обслуживаться какое-либо событие, необходимо с помощью функции open-event сначала создать запись о нем, а затем посредством функции enableevent разрешить его обработку.
Функция disableevent
Номер: 0Dh.
Параметры:
а0 - дескриптор события.
Результат:
v0 - 1 при удаче, 0 при ошибке. Описание.
Функция запрещает обслуживание события с указанным дескриптором. Из таблицы событий запись не удаляется, так что в дальнейшем можно снова разрешить обработку этого события, вызвав функцию enableevent, или удалить структуру описания события функцией closeevent.
Функция open
Номер: 32h.
Параметры:
а0 - указатель на имя файла;
a1 - режим работы с файлом. Результат:
v0 - дескриптор файла или -1 при ошибке. Описание.
Функция открывает файл (на компакт-диске или на устройстве memory card) для дальнейшей работы с ним. Игровая приставка SONY PLAYSTATION может использовать одновременно не более 16 файлов. Режим задают следующие разряды:
D0 - 1 для чтения.
D1 - 1 для записи.
D9 - 1 для создания нового файла.
D16 - D31 - число блоков в карте памяти (memory card), резервируемое для нового файла.
Возвращаемый функцией дескриптор файла при¬меняется другими функциями.
Функция lseek
Номер: 33h.
Параметры:
а0 - дескриптор файла;
a1 - смещение;
а2 - база. Описание.
Функция перемещает указатель, определяющий текущую позицию доступа к файлу, на число байтов, заданное в регистре a1. Если в регистре а2 записан 0, то смещение вычисляется относительно начала файла, если 1 - относительно имеющейся позиции указателя. Никаких проверок на выход за границы файла не производится.
Функция read
Номер: 34h.
Параметры:
а0 - дескриптор файла;
a1 - указатель на буфер для считанных данных;
a1 - число байтов, которые будут прочитаны. Результат.
v0 - число реально прочитанных байтов или -1 при ошибке.
Описание.
Функция читает данные из открытого файла и записывает их в память по указанному адресу.
Функция write
Номер: 35h.
Параметры:
а0 - дескриптор файла;
a1 - указатель на записываемые данные;
а2 - число записываемых байтов.
Результат:
v0 - число реально записанных байтов или -1 при ошибке. Описание.
Функция записывает данные в карту memory card. При попытке сохранить информацию на CD-ROM в качестве результата будет возвращен 0.
Функция close
Номер: 36h.
Параметры:
а0 - дескриптор файла. Результат:
v0 - дескриптор файла или -1 при ошибке. Описание.
Функция закрывает определяемый дескриптором файл.
Разумеется, функций в ПЗУ игровой приставки гораздо больше, чем описано здесь. В разделе приведен только минимальный набор, который позволит разобраться с излагаемым далее материалом, а также понимать тексты программ.
Далее >>
874 Прочтений •  [Игровая приставка Sony PlayStation (Часть 2)] [19.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Игровая приставка Sony PlayStation ... Ukraine Vova 19.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка