Подтвердить что ты не робот

Как запрограммировать старые игровые консоли?

Я хочу знать, как программировать старые игровые консоли для удовольствия.

Можно ли использовать язык программирования, такой как C? Придется ли мне использовать сборку? Я не знаю консольного компилятора, ассемблера или API. Мне нужно будет скомпилировать в ПЗУ изображение и протестировать с эмуляторами, потому что у меня нет никакой консоли.

Каждая консоль имеет свои интересные функции, и я хотел бы поиграть с ними.

  • Atari 2600 (всего 128 байт оперативной памяти)
  • NES (только 8 бит)
  • SNES (хорошая консоль, 16 бит)
  • PS1 (3D, сложный)
  • Game Boy (простой, монохроматический)
4b9b3361

Ответ 1

Старые системы, такие как Atari, NES и GameBoy, как правило, программируются в Assembly или C. Существует множество инструментов для разработки GameBoy, с которыми я играл:

Rednex Gameboy Development (ASM): http://www.otakunozoku.com/rednex-gameboy-development-system/
GBDK (C): http://gbdk.sourceforge.net/

И хотя на нем много мертвых ссылок, на этой странице есть много хорошей информации и ссылок на разработку GameBoy в целом: http://www.devrs.com/gb/

Для NES есть два сборника, которые я знаю. Второй учебник связан с первым, с утверждением, что он превосходит, но я не могу прокомментировать, поскольку вторая ссылка не существовала в прошлый раз, когда меня интересовала эта тема.
http://www.patater.com/nes-asm-tutorials
http://www.nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155

Если это не слишком для вас, у GBA есть много отличных ресурсов доморощенного и, как правило, программируется с использованием C. Богатство информации о GBA делает его хорошим местом для начала:

DevKitPro предоставляет полный набор инструментов GNU для разработки GBA (DevKitARM + libgba): http://www.devkitpro.org/

TONC - очень хорошее руководство для GBA с большим подробным объяснением: http://www.coranac.com/tonc/text/

Наконец, незаменимый лист gbatek, в котором подробно описано оборудование GBA. Это расскажет вам, какие регистры на GBA вы должны играть, чтобы менять графические режимы, режимы звучания, использовать прерывания и т.д.
http://nocash.emubase.de/gbatek.htm

Программирование для этих старых игровых систем имеет много общего с программированием микроконтроллеров. Без какого-либо слоя абстракции вам нужно сделать побитовое манипулирование регистрами, чтобы выполнить даже самые простые вещи.

Edit: Основная проблема, с которой я столкнулся при программировании GBA, - это выяснить, как работают звуковые регистры. Это было (есть?) Реальное слепое пятно с точки зрения учебников. Лучшим ресурсом в то время было изучение листа gbatek, и эти сайты:
http://deku.rydia.net/program/sound1.html
http://belogic.com/gba/

Ответ 2

Создатели консолей предоставляют свои собственные инструменты/компиляторы (SDK) для машинного процессора, так как они (в большинстве случаев) узкоспециализированы.

Но большую часть времени вы будете писать на C/С++. Я уверен, что вам нужно будет чаще, а не прибегать к ASM.

Попробуйте эту ссылку: http://www.emuparadise.me/sdk/index.php

Ключевые слова Google: sdk, console, homebrew, indie

Ответ 3

Есть еще несколько "открытых" консолей доморощенного, которые предназначены для работы аналогично машинам прошлого, но с гораздо более легким доступом к информации и более дружественным инструментам.

Что-то вроде XGameStation Pico даст вам опыт, похожий на Atari 2600, а Micro Edition значительно более мощный и поставляется с документацией относительно того, как работают консоли, подобные ей.

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