Характеристики программирования Nintendo 64 - Nintendo 64 programming characteristics

Программные характеристики Nintendo 64 описывают элементы написания программного обеспечения для игровой системы Nintendo 64 (N64).

История

Nintendo 64 была выпущена в 1996 году. В то время The Economist описал систему как «ужасающе сложную». Утверждалось, что трудности связаны с недосмотром со стороны разработчиков оборудования, ограничениями на 3D-графику, технологическими ограничениями того времени и производственными проблемами.

Когда Nintendo 64 подошла к концу своего жизненного цикла, директор по разработке оборудования Гэнё Такеда назвал ее проблемы программирования словом hansei (по- японски : 反省 «рефлексивное сожаление»). Такеда сказал: «Когда мы делали Nintendo 64, мы думали, что логично, что если вы хотите делать сложные игры, это становится технически сложнее. Мы ошибались. Теперь мы понимаем, что важна крейсерская скорость, а не мгновенная вспышка пика. власть."

объем памяти

Консоль использует Rambus DRAM с высокой пропускной способностью, но с высокой задержкой . Он размещается на сопроцессоре реальности (RCP), имеющем внутреннее соединение между процессором сигналов реальности, процессором отображения реальности и интерфейсами ввода-вывода (включая микропроцессор).

Существует физическое адресное пространство, в которое отображается большинство ресурсов, включая Game Pak, инструкцию RSP и локальное хранилище данных , но ни локальное хранилище текстуры RDP, ни какой-либо кэш ЦП. Интерфейсы RSP, RDP и IO имеют свой собственный механизм DMA, программируемый регистрами, доступными через физическое адресное пространство. RSP может обращаться только к своему локальному хранилищу и может программировать свой механизм DMA. Механизм RDP DMA обрабатывает буферы команд (так называемые списки отображения); RDP имеет дополнительный интерфейс памяти для доступа к видеобуферам и данным, способный напрямую извлекать данные из локального хранилища данных RSP через отдельный путь к данным.

R4300 процессор подключен к RCP через интерфейс микропроцессора, и может выполнять запрограммировано IO через его кэш - память и интерфейс.

Процессор отображения реальности

Процессор Reality Display - это растеризатор и шейдер с фиксированным конвейером, с Z-буферизацией, выводящий буфер кадра для видеоинтерфейса для сканирования на дисплей.

Кеш текстур

Размер кэша текстур составлял 4  КБ . Его небольшой размер побудил разработчиков растянуть небольшие текстуры на сравнительно большее пространство. Билинейная фильтрация консоли только размывает их. Когда Мипмаппинг используется, текстура ширины требований и дополнительной памяти для уровней MIPMAP ограничить наибольший уровень MIPMAP до 2 КБ. К концу рыночного цикла Nintendo 64 некоторые разработчики предварительно вычислили свои текстуры, используя многослойное текстурирование и небольшие фрагменты текстуры, которые были сильно зажаты, для имитации более крупных текстур. Примеры этого обходного пути можно найти в Rare 's Perfect Dark , Banjo-Tooie , Conker's Bad Fur Day и в Индиане Джонсе и Адской машине из Factor 5 . В некоторых играх с нереалистичной эстетикой вместо текстурирования определенных поверхностей используется однотонная штриховка Гуро (например, Super Mario 64 ).

Большой силой был патрон Н64. Мы используем картридж почти как обычную оперативную память и передаем в потоковом режиме все данные уровня, текстуры, анимацию, музыку, звук и даже программный код во время работы игры. С окончательным размером уровней и количеством текстур оперативной памяти N64 никогда не хватило бы даже удаленно, чтобы соответствовать любому индивидуальному уровню. Так что картриджная технология действительно спасла положение.

-  Фактор 5, вывод Indy на N64, IGN

Скорость заполнения

Многие игры для Nintendo 64 имеют ограничение по скорости заполнения, а не по геометрии. Например, Z-буферизация, когда она включена, составляет значительную долю доступа к памяти, в противном случае она необходима для текстур и кадрового буфера. Оптимизация возможна путем передачи этой функции на RSP и CPU с использованием специального микрокода. Значительную оптимизацию производительности можно найти, используя микрокод, подходящий для каждой игры. Рейтинг полигонов Nintendo 64 в секунду составляет около 160 000 при включенных аппаратных функциях. Некоторые из наиболее многоугольных игр для Nintendo 64 включают World Driver Championship , Turok 2: Seeds of Evil и Indiana Jones and the Infernal Machine .

Реальный сигнальный процессор

Процессор сигналов реальности (RSP) принимает микрокод , с помощью которого разработчик может получать доступ к различным операциям, создавать новые эффекты и оптимизировать скорость или качество. RSP - это RISC-процессор, менее способный, чем CPU, но с 8-полосным 16-битным векторным движком. Эффективное использование этого механизма регулируется микрокодом, который определяет небольшую последовательность инструкций для каждой сложной инструкции. Продвигая особенность пользовательских микрокодов, Nintendo сначала отказалась делиться информацией о том, как использовать соответствующие инструменты микрокода. Это было связано с опасением, что его скопируют конкуренты. Однако в течение последних нескольких лет консоли Nintendo делилась информацией о микрокоде с несколькими разработчиками. Официальные инструменты кода Nintendo являются простыми, без отладчика и плохой документацией.

Микрокод SGI по умолчанию для Nintendo 64 называется Fast3D, который, по утверждениям некоторых разработчиков, плохо профилирован для использования в играх. Хотя он генерирует более 100 000 полигонов высокой точности в секунду, этот микрокод оптимизирован больше для точности, чем для скорости, и производительность пострадала. Микрокод Nintendo "Turbo3D" позволяет обрабатывать от 500 000 до 600 000 полигонов нормальной точности в секунду. Однако из-за ухудшения графики Nintendo официально не рекомендовала его использовать. Такие компании, как Factor 5 , Boss Game Studios и Rare, смогли написать собственный микрокод, который, как сообщается, работает с их игровыми движками лучше, чем стандартный микрокод SGI .

Одним из лучших примеров нестандартного микрокода является порт N64 от Factor 5 для компьютерной игры Indiana Jones and the Infernal Machine . Команда Factor 5 стремилась к режиму высокого разрешения 640 × 480 из-за его визуальной четкости. Было сказано, что машина работала на пределе своих возможностей при разрешении 640 × 480. Z-буфер нельзя было использовать, потому что он сам по себе потреблял уже ограниченную скорость заполнения текстуры. Чтобы обойти кэш текстур размером 4 КБ, программисты придумали собственные форматы текстур и инструменты. Каждая текстура была проанализирована и адаптирована к лучшему формату текстур по производительности и качеству. Они использовали картридж в качестве источника потоковой передачи текстур, чтобы втиснуть как можно больше деталей в каждую среду и обойти ограничения оперативной памяти. Они написали микрокод для освещения в реальном времени, потому что поставляемый микрокод от SGI не был оптимизирован для этой задачи, и потому что они хотели иметь больше освещения, чем версия для ПК. Микрокод Factor 5 обеспечивает практически неограниченное освещение в реальном времени и значительно увеличивает количество полигонов. В конце концов, версия N64 считается более многофункциональной, чем версия для ПК, и считается одной из самых продвинутых игр для устройства.

Фактор 5 снова использовал собственный микрокод в таких играх, как Star Wars: Rogue Squadron и Star Wars: Episode I: Battle for Naboo . В Star Wars: Rogue Squadron команда изменила микрокод ландшафтного движка, чтобы создать инопланетные миры. В « Звездных войнах: Битва за Набу» они использовали то, чему научились у Rogue Squadron, и заставили игру работать с разрешением 640 × 480, а также внесли улучшения для частиц и движка ландшафта. В Battle for Naboo большая дальность прорисовки и большое количество снега и дождя даже в режиме высокого разрешения.

Смотрите также

использованная литература