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

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

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

У каждой консоли есть свои интересные особенности, и я хотел бы поиграть с ними.

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

3 ответа

Решение

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

Разработка Rednex Gameboy (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

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

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

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

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

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

Ключевые слова Google: SDK, консоль, доморощенный, инди

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

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

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

Другие вопросы по тегам