Как программировать на старые игровые приставки?
Я хочу знать, как программировать на старые игровые приставки для удовольствия.
Могу ли я использовать язык программирования, такой как 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 значительно мощнее и поставляется с документацией о том, как работают подобные консоли.
Если вы явно не хотите разрабатывать крупномасштабные коммерчески выпущенные консоли, они могут послужить отличной альтернативой и, возможно, гораздо лучшим инструментом обучения для новичка во встроенном программировании.