Вопрос

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

Это было полезно?

Решение

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

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

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

Что касается ресурсов, Nes Dev Wiki Имеет ресурсы, касающиеся аппаратного обеспечения NES, а также программные ссылки. Домен ZOPHAR также имеет технические документы и общественные достояние ROM для довольно нескольких консоли (я не знаю, стоит ли ссылаться на ZD на этом сайте, просто Google IT)

Другие советы

Большинство более старых консолей имели какой-то BIOS ROM.

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

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

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

Колковиоз имел 8k (!) BIOS POOS также; Это источник здесь: http://xi6.com/code/Coleco/Coleco29.asm.asm.

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top