Ретро программирование видеоигр

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

12
задан 14 June 2010 в 03:56
поделиться

4 ответа

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

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

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

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

.
10
ответ дан 2 December 2019 в 21:22
поделиться

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

1
ответ дан 2 December 2019 в 21:22
поделиться

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

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

-1
ответ дан 2 December 2019 в 21:22
поделиться

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

Часть исходного кода для них находится в сети:

Вы можете прочитать наиболее часто комментируемую дизассемблированную версию 7800 BIOS: 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 - в нем были процедуры для перемещения спрайтов, чтения контроллеров и вычислить квадратные корни!

2
ответ дан 2 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: