• Games
  • TMNT
  • Игры
  • Игры
Главная
Всё для геймера: Обзоры игр, Игровые новости, Читы, Советы и пр.
Всё о компьютерных и консольных играх.
Приветствую Вас Гость
Меню геймера
Разделы каталога
Консоли стационарные [21]
Информация про консоли и приставки, комплектующие: картриджи, геймпады и пр.
Портативные консоли [7]
Переносные, ручные игровые консоли, т.н. handheld’ы, а также их комплектующие
Мобильные системы [2]
Мобильные телефоны, смартфоны, КПК, наладонники, планшеты и подобные устройства
PC и железо [3]
Персональный компьютер, микросхемы, джойстики, видеокарты и прочие комплектующие
Ретрокомпьютеры [3]
Бытовые компьютеры прошлого, архитектура, комплектующие и пр.
Игровые автоматы [11]
Статьи про аркадные системы, игровые автоматы, как электрические, так и механические
Опрос геймеров
Сколько часов в сутки вы играете в игры?
Всего ответов: 13958
Главная » Статьи » Игровые системы » Консоли стационарные

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

Знакомство с трехмерной графикой
Прежде чем говорить о принципах функционирования данного сопроцессора, системе команд и назначении внутренних регистров, напомним основные соотношения, используемые в трехмерной графике. Конечно, здесь мы представим лишь базовые понятия, дополнительную информацию можно найти в соответствующей литературе.
Чтобы определить местоположение точки в трехмерном пространстве, обычно используют декартову систему координат, изображенную на рис. 4.3. В этой системе координат любая точка в пространстве может быть определена набором из трех значений, отражающих ее позицию вдоль каждой из осей. Обычно они указываются в угловых скобках, например <1,2,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 при ошибке. Описание.
Функция закрывает определяемый дескриптором файл.
Разумеется, функций в ПЗУ игровой приставки гораздо больше, чем описано здесь. В разделе приведен только минимальный набор, который позволит разобраться с излагаемым далее материалом, а также понимать тексты программ.

Категория: Консоли стационарные | Добавил: G-GURU (06.11.2010)
Просмотров: 2146 | Рейтинг: 5.0/2 |
Вы можете отправить сообщение на e-mail друга:

Интересное геймерам:

Смотрите другие материалы по темам: PlayStation, Функция, PSX, Sony PlayStation, Адресное пространство, Игровая приставка.

Также вам предлагаются схожие с «Игровая приставка Sony PlayStation (Часть 2)» материалы:

Если понравился материал «Игровая приставка Sony PlayStation (Часть 2)» и вы можете обсудить его ниже.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск информации
Игровые братья
Создание игр, Конструкторы игр, Игровые движки Перевод консольных игр Скачать файлы: софт, видео Игорный бизнес в России Разработка игр в СНГ Пранк - телефонные шутки
10 новых описаний
Орден Магов
War Thunder
Hello, Neighbour
Как провести время на конференции наиболее эффективно
WarCraft Adventures: Lord of the Clans
Во что я люблю играть – гоняю эмуляторы!
Империю Онлайн 2: Халифат
Купля-продажа аккаунтов MMOG
Инди-игрострой почти мёртв
Hearthstone - игра от создателей легендарного Warcraft
Все права сохранены за сайтом GFAQ.ru © 2016. Games Frequently Asked Questions
Полные прохождения, Секреты, Коды, Пароли, Советы, Уловки, Читы, Описания для Компьютерных и Консольных Игр. Хостинг от uCoz
Обращаем особое внимание на то, что при цитировании и размещении данных текстовых материалов, обязательно прикрепляйте ссылку на официальный сайт "GFAQ.ru".