如何为旧游戏机编程?

21

我想知道如何编程老游戏机,只是为了好玩。

我可以使用C这样的编程语言吗?我需要使用汇编语言吗?我不了解任何控制台的编译器、汇编器或API。我需要编译成ROM镜像并在模拟器中测试,因为我没有任何控制台。

每个控制台都有其有趣的特点,我想和它们一起玩耍。

  • Atari 2600(只有128字节的RAM)
  • NES(只有8位)
  • SNES(一个很好的控制台,16位)
  • PS1(3D,复杂)
  • Game Boy(简单,单色)

如果我要猜的话,纯粹是猜测,他们可能会有自己的语言/编译器,因为这样独特的硬件。至少相对于标准计算机来说是独特的。 - Corey Ogburn
谷歌Stella适用于Atari 2600,仍然存在编程社区,有一个针对6502和其他一些语言的小型C编译器。您可能需要了解一些汇编语言。 - old_timer
有很多NES和SNES模拟器,因此关于它们如何工作的信息是公开的。不确定是否有新的自制游戏开发正在进行,但相关信息已经公开并且有模拟器可用。 - old_timer
Gameboy(旧版)是类似于Z80的,应该能够找到适用于Z80的小型C编译器,以及汇编程序等内容,还有可能会有一些模拟器。任天堂(所有版本)的难点在于视频处理而不是处理器或编程语言,多层、瓷砖、精灵、关于此处和那里有多少个精灵的规则,对所有内容都有限制,从处理器/处理角度来看通常性能不足。 - old_timer
Atari 2600可能是你开始的最佳选择。 - old_timer
3个回答

4
较早的系统,例如Atari、NES和GameBoy通常是用汇编或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(此链接已失效,请使用wayback machine
如果你不介意使用较新的设备,GBA有很多优秀的homebrew资源,并且通常使用C进行编程。GBA上的大量信息使其成为入门的好地方:
DevKitPro为GBA开发提供了完整的GNU工具链(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/

1
游戏机制造商会为其处理器提供自己的工具/编译器(SDK),因为它们通常是高度专业化的。
但大多数情况下,您将使用C/C++进行编码。我相信您需要更频繁地使用汇编语言。
请尝试此链接: http://www.emuparadise.me/sdk/index.php 谷歌关键字:sdk、游戏机、自制软件、独立开发者

1

还有一些“开放式”自制游戏机,旨在与过去的机器类似,但访问信息更加容易且工具更加友好。

例如XGameStation Pico将为您提供类似于Atari 2600的体验,而Micro Edition则更加强大,并附带有关类似于它的游戏机如何工作的文档。

如果您不是明确要为大规模商业发布的游戏机开发,这些游戏机可能是一个很好的替代选择,对于新手嵌入式编程者来说,这可能是一个更好的学习工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接