Я просто смотрел Super Mario Bros. -1 Мировой глюк в youtube, и я действительно начал интересоваться кодом, стоящим за этими играми. Какой язык использовался? Что относительно ОС для консолей видеоигр? Есть ли веб-сайт с ресурсами по этому вопросу? (Я - видеоигры 90-х, поэтому я особенно заинтересован в программировании этих игр, но не стесняйтесь делать это вики и включать ссылки на ресурсы о программировании видеоигр в целом, если хотите)Программное обеспечение для программирования видеороликов
ответ
Несколько работал над эмулятором для NES (у меня есть декодирование некоторых кодов операций, но ни одно другое оборудование не эмулируется), я могу поделиться несколькими ответами.
Для большинства игр использовался ассемблер. Оптимизация компиляторов, если они доступны для ЦП, была не так хороша 20-30 лет назад, как сегодня. Чтобы получить производительность, вам нужно написать на ассемблере (это даже верно на ПК. Части Doom находятся в ASM). Тем более, что процессор NES работал менее чем на 2 МГц. Кроме того, память была дороже, чем сегодня. Первоначальный Марио хранился примерно в 40 тыс. Памяти. 16k - это фактический код, а остальные - графические и звуковые ресурсы.
До 32-разрядной консоли, любой вид операционной системы или даже встроенные утилиты на консоли были необычными (компакт-диск Sega был одним из немногих в эпоху 16 бит с фактическим BIOS, и там была небольшая программа, сжигаемая в процессоре Game Boy, которая отвечала за прокрутку логотипа Nintendo при включении). В качестве основной причины см. Выше ограничения по размеру. При вставке картриджа чип ROM в автомобиле был подключен непосредственно к адресной шине CPU. При включении CPU будет считывать с фиксированного адреса, чтобы получить фактический адрес, с которого была запущена программа, а затем переместился в это место и начал выполнение.
Что касается ресурсов, NES Dev Wiki имеет ресурсы, касающиеся аппаратного обеспечения NES, наряду со ссылками programmming. Домен Zophar также имеет технические документы и общедоступные ПЗУ для довольно многих консолей (я не знаю, должен ли я ссылаться на ZD на этом сайте, просто Google)
'был одним из немногих ... с фактическим BIOS' - вы имеете в виду ОС? –
Я не знаю сделанные исследования об этом, но Super Mario Bros и выпущенные 90-е игры доступны как .nes файлы, а не картридж, и там есть эмулятор opensource.
AFAIK, они, как правило, написаны на C++. Я не знаю о законности этих файлов и эмулятора, но они доступны в Интернете. у вас есть поиск с правильной строкой!
Игры и консольное программное обеспечение не были написаны на C++. Или вы имели в виду эмуляторы в настоящее время? –
Привет, Доминик, да, я говорю о сегодняшнем эмуляторе (например, nector и т. Д.). – thatsalok
Большинство старых консолей имели своего рода 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, потому что игра запрашивает информацию из разных регистров, поэтому я задавался вопросом об общей архитектуре программирования. Даже обнаружение столкновения - это концепция, и интересно, как это достигается. – 2010-06-14 21:52:35
В конце 70-х, 80-х и начале 90-х годов большинство программ (включая игры) были написаны на ASM (Assembly). Если вы не знакомы с Assembly, это практически очень простой язык программирования, который является аппаратным для программирования CPU. Это означает, что вам нужно было контролировать каждый пиксель на экране и воссоздавать библиотеки для таких вещей, как физика, графика и даже звук! Вы были очень ограничены в памяти, поэтому переработка была обязательной. В оригинальном Super Mario Bros вы заметите, что облака такие же, как кусты, единственным отличием является цвет. Многие спрайты были переработаны, и физика игры была ограничена.
Поскольку игры становились все более сложными, разработчики перешли на язык C, что позволило писать гораздо быстрее, потому что требовалось меньше строк кода. В настоящее время на C++ написано много консольных и компьютерных игр, поскольку оно позволяет ускорить разработку, а также позволяет достаточно быстро поддерживать программное обеспечение для аппаратного обеспечения для более быстрой игры.
Вы можете ссылаться на это видео? Какой глюк? – Ether
http://www.youtube.com/watch?v=JeHccUgn4hI – 2010-06-14 16:18:21