2010-06-14 5 views
11

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

+0

Вы можете ссылаться на это видео? Какой глюк? – Ether

+0

http://www.youtube.com/watch?v=JeHccUgn4hI – 2010-06-14 16:18:21

ответ

10

Несколько работал над эмулятором для NES (у меня есть декодирование некоторых кодов операций, но ни одно другое оборудование не эмулируется), я могу поделиться несколькими ответами.

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

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

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

+0

'был одним из немногих ... с фактическим BIOS' - вы имеете в виду ОС? –

-1

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

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

+1

Игры и консольное программное обеспечение не были написаны на C++. Или вы имели в виду эмуляторы в настоящее время? –

+0

Привет, Доминик, да, я говорю о сегодняшнем эмуляторе (например, nector и т. Д.). – thatsalok

2

Большинство старых консолей имели своего рода BIOS ROM ,

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

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

Атари 5200 в источник BIOS является более интересным, так как это делает более просто инициализируйте систему и отобразите заставку: 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

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

+0

Правда. Из того, что я читаю, происходит -1, потому что игра запрашивает информацию из разных регистров, поэтому я задавался вопросом об общей архитектуре программирования. Даже обнаружение столкновения - это концепция, и интересно, как это достигается. – 2010-06-14 21:52:35

1

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

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