Программирование ретро видео игр - PullRequest
12 голосов
/ 14 июня 2010

Я только что посмотрел Super Mario Bros. -1 Мировой сбой в YouTube, и я действительно задумался о коде этих игр. Какой язык был использован? А как насчет ОС для игровых приставок? Есть ли сайт с ресурсами по этой теме? (Я геймер 90-х годов, поэтому я особенно заинтересован в программировании этих игр, но не стесняйтесь делать это вики и включать ссылки на ресурсы о программировании видеоигр в целом, если хотите)

Ответы [ 5 ]

10 голосов
/ 14 июня 2010

Немного поработав над эмулятором для NES (у меня он декодирует некоторые коды операций, но ни одно другое оборудование не эмулируется), я могу поделиться несколькими ответами.Для большинства игр использовался ассемблер.Оптимизирующие компиляторы, если они были доступны для ЦП, были далеко не так хороши 20–30 лет назад, как сегодня.Чтобы получить производительность, вам нужно было написать на ассемблере (это даже верно для ПК. Части Doom есть в ASM).Тем более что процессор NES работал на частоте менее 2 МГц.Кроме того, память была дороже, чем сегодня.Оригинальный Mario хранился примерно в 40 тысячах памяти.16 тыс. Из них составляли реальный код, а оставшиеся - графические и звуковые ресурсы.

До эпохи 32-битных консолей любая операционная система или даже встроенные утилитыконсоль была необычной (Sega CD был одним из немногих в 16-битной эпохе с настоящим BIOS, и в процессор Game Boy была встроена небольшая программа, которая отвечала за прокрутку логотипа Nintendo при включении).См. Выше об ограничениях размера, как основной причине.При вставке картриджа микросхема ПЗУ в автомобиле была подключена непосредственно к адресной шине ЦП.При включении процессор будет считывать данные с фиксированного адреса, чтобы получить фактический адрес, с которого была запущена программа, а затем перейти к этому месту и начать выполнение.

Что касается ресурсов, то NES Dev Wiki имеет ресурсы, касающиеся оборудования NES, а также ссылки на программирование.Домен Zophar's также имеет технические документы и общедоступные ПЗУ для многих консолей (я не знаю, стоит ли мне ссылаться на ZD на этом сайте, просто Google)

2 голосов
/ 15 июня 2010

У большинства старых консолей было какое-то ПЗУ BIOS.

Некоторые из исходных кодов для них онлайн:

Вы можете прочитать наиболее прокомментированную разборку в BIOS 7800: http://atarihq.com/danb/files/7800bios.asm

Источник BIOS в Atari 5200 более интересен, поскольку он не только инициализирует систему и отображает заставку: http://atarihq.com/danb/files/5200BIOS.txt

В Colecovision также было 8K (!) BIOS ROM; его источник здесь: http://xi6.com/code/coleco/coleco29.asm

Источник BIOS Odyssey II находится здесь: http://atarihq.com/danb/files/o2romsrc.txt

В Intellivision была ОС под названием "exec", она не может найти разборку в Интернете, хотя я нашел кучу информации об этом: http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec и http://www.beeslife.com/faq.htm#_Toc140592020 - у него были процедуры перемещайте спрайты, читайте контроллеры и вычисляйте квадратные корни!

1 голос
/ 06 ноября 2017

В конце 70-х, 80-х и начале 90-х годов большая часть программного обеспечения (включая игры) была написана на языке ASM (Assembly). Если вы не знакомы с ассемблером, это практически очень низкоуровневый язык программирования, специфичный для аппаратного обеспечения программирования ЦП. Это означает, что вам пришлось контролировать каждый пиксель на экране и создавать библиотеки для таких вещей, как физика, графика и даже звук! Вы были очень ограничены в памяти, поэтому переработка была обязательна. В оригинальном Super Mario Bros вы заметите, что облака такие же, как и кусты, отличается только цвет. Многие спрайты были переработаны, а физика игры была ограничена.

По мере того, как игры становились все более и более сложными, разработчики перешли на язык C, который позволял писать программы намного быстрее, поскольку требовалось меньше строк кода. В настоящее время многие консольные и компьютерные игры написаны на C ++, потому что это обеспечивает более быструю разработку, но также позволяет программному обеспечению быть достаточно близко к аппаратному обеспечению для более быстрой игры.

1 голос
/ 15 июня 2010

Большинство сбоев в этом видео - это сбои, основанные на элементах мозаики, где есть ошибки в обнаружении столкновений карт элементов мозаичного изображения, которые составляют уровни. Все уровни состоят из плиток квадратной формы. Если вы заметили, что Марио всегда между плитками, где он не должен быть.

0 голосов
/ 14 июня 2010

Я не проводил исследований по этому поводу, но Super Mario Bros и выпущенные игры 90-х годов доступны в виде файлов .nes вместо картриджей, и там также доступен эмулятор с открытым исходным кодом.

AFAIK, они обычно пишутся наC ++.Я не знаю о легальности этих файлов nes и эмулятора, но они доступны в интернете.у вас есть поиск с правой строкой!

...