Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 如何对旧游戏机进行编程?_Compiler Construction_Hardware_Video Game Consoles - Fatal编程技术网

Compiler construction 如何对旧游戏机进行编程?

Compiler construction 如何对旧游戏机进行编程?,compiler-construction,hardware,video-game-consoles,Compiler Construction,Hardware,Video Game Consoles,我想知道如何编程到旧游戏机的乐趣 我可以使用像C这样的编程语言吗?我必须使用汇编吗?我不知道任何控制台编译器、汇编程序或API。我需要编译成ROM映像并用模拟器进行测试,因为我没有任何控制台 每个控制台都有其有趣的功能,我想使用它们 Atari 2600(只有128字节的RAM) NES(仅8位) SNES(一个好的控制台,16位) PS1(3D,复杂) 游戏机(简单,单色) 控制台制造商为机器处理器提供自己的工具/编译器(SDK),因为它们(大多数时候)高度专业化 但大多数情况下,您将使用C

我想知道如何编程到旧游戏机的乐趣

我可以使用像C这样的编程语言吗?我必须使用汇编吗?我不知道任何控制台编译器、汇编程序或API。我需要编译成ROM映像并用模拟器进行测试,因为我没有任何控制台

每个控制台都有其有趣的功能,我想使用它们

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

控制台制造商为机器处理器提供自己的工具/编译器(SDK),因为它们(大多数时候)高度专业化

但大多数情况下,您将使用C/C++编写代码。我相信你需要更多的时间,而不是求助于ASM

请尝试以下链接:


谷歌关键词:sdk、console、自制、indie

像Atari、NES和GameBoy这样的较旧系统通常是用汇编或C语言编程的。我曾经使用过多种GameBoy开发工具,例如:

Rednex游戏机开发(ASM):
GBDK(C):

虽然有很多死链接,但这个页面有很多关于GameBoy开发的好信息和链接:

对于NES,我知道有两个汇编教程。第二篇教程从第一篇链接到第二篇,声称它优于第二篇,但我无法评论,因为上次我对这个主题感兴趣时,第二篇链接并不存在。

(此链接不再有效,)

如果它对您来说不是太新,GBA有很多很棒的自制资源,并且通常使用C进行编程。关于GBA的丰富信息使其成为一个很好的起点:

DevKitPro为GBA开发提供了完整的GNU工具链(DevKitARM+libgba):

TONC是GBA的一个非常好的指南,有很多详细的解释:

最后,必不可少的gbatek表详细说明了GBA的硬件。这将告诉您必须使用GBA上的哪些寄存器来更改图形模式、声音模式、使用中断等。

这些旧游戏系统的编程与微控制器编程有很多共同之处。如果没有某种抽象层,即使是最基本的事情,也必须对寄存器进行大量的位操作

编辑:我在做GBA编程时遇到的主要问题是弄清楚声音寄存器是如何工作的。就教程而言,这是一个真正的盲点。当时最好的资源是研究gbatek表和这些网站:


还有一些“开放式”自制控制台,其设计与过去的机器类似,但更易于获取信息和使用更友好的工具

类似的东西将给你一个类似于Atari 2600的体验,微版功能更强大,并且附带了关于类似于它的控制台如何工作的文档


如果您不打算开发大规模的、商业化发布的控制台,那么这些控制台可能是一个很好的替代方案,对于刚接触嵌入式编程的人来说,可能是一个更好的学习工具。

如果我只是猜测,纯粹是猜测,他们可能有自己的语言/编译器,因为有这样独特的硬件。至少与标准计算机相比是独一无二的。谷歌stella对于atari 2600,仍然有一个编程社区,还有一个用于6502和其他一些的小型c编译器。你可能会想知道一些nes和snes模拟器的汇编语言,所以关于它们如何工作的信息就在那里,不确定是否有新的自制开发正在进行,但信息就在那里和模拟器。gameboy(旧的)是一个类似z80的,应该能够找到一个适用于z80的小型c编译器,以及汇编的东西,可能还有一些模拟器。任天堂(所有任天堂)最难的部分是他们的视频内容,而不是处理器或编程语言、多层、瓷砖、精灵、关于精灵数量的规则、对所有东西的限制,通常动力不足(从处理器/处理角度来看)。atari 2600可能是你最好的选择。