我刚刚在 youtube 上观看了 Super Mario Bros. -1 World 故障,我真的开始想知道这些游戏背后的代码。使用了哪种语言?视频游戏机的操作系统呢?有没有关于这个主题的资源的网站?(我是一名 90 年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但如果你愿意,可以随意将其设为 wiki,并包含指向一般视频游戏编程资源的链接)
5 回答
在为 NES 模拟器工作过(我让它解码了一些操作码,但没有模拟其他硬件),我也许可以分享一些答案。
大多数游戏都使用了汇编程序。优化编译器(如果可用于 CPU)在 20 到 30 年前远没有今天那么好。为了获得性能,您需要用汇编程序编写(这甚至在 PC 上也是如此。Doom 的一部分在 ASM 中)。更是如此,因为 NES CPU 的运行频率低于 2MHz。此外,当时的内存比今天更贵。最初的马里奥存储在大约 40k 的内存中。其中 16k 是实际代码,其余的是图形和声音资源。
直到 32 位控制台时代,控制台上的任何类型的操作系统,甚至内置的实用程序都很少见(世嘉 CD 是 16 位时代为数不多的具有实际 BIOS 的之一,并且有一个小程序被烧毁进入负责在开机时向下滚动任天堂徽标的 Game Boy 处理器)。见上文关于尺寸限制的一个主要原因。插入墨盒时,车内的 ROM 芯片直接连接到 CPU 的地址总线。上电时,CPU 会从一个固定地址读取,以获取程序开始时的实际地址,然后跳转到该位置并开始执行。
至于资源,NES Dev Wiki有关于 NES 硬件的资源,以及编程参考。Zophar's Domain 还有很多控制台的技术文档和公共领域 ROM(我不知道我是否应该在这个网站上链接到 ZD,只是谷歌它)
大多数较旧的游戏机都有某种 BIOS ROM。
这些的一些源代码是在线的:
您可以阅读评论最多的 7800 BIOS 反汇编:http: //atarihq.com/danb/files/7800bios.asm
Atari 5200 的 BIOS 源代码更有趣,因为它不仅仅是初始化系统和显示启动屏幕:http ://atarihq.com/danb/files/5200BIOS.txt
Colecovision 也有一个 8K (!) BIOS ROM。它的来源在这里:http: //xi6.com/code/coleco/coleco29.asm
Odyssey II BIOS 源代码在这里:http ://atarihq.com/danb/files/o2romsrc.txt
Intellivision 有一个名为“exec”的操作系统,虽然我确实找到了很多关于它的信息,但在网上找不到反汇编:http: //www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec和http ://www.beeslife.com/faq.htm#_Toc140592020 - 它有移动精灵、读取控制器和计算平方根的例程!
该视频中的大多数故障都是基于图块的故障,其中在构成关卡的图块地图的碰撞检测中存在错误。所有级别均由方形瓷砖组成。如果你注意到马里奥总是在他不应该在的瓷砖之间。
早在 70 年代末、80 年代和 90 年代初,大多数软件(包括游戏)都是用 ASM(Assembly)编写的。如果您不熟悉汇编,它实际上是一种非常低级的编程语言,是专门用于编程 CPU 的硬件。这意味着您必须控制屏幕上的每个像素,并为物理、图形甚至声音等内容重新创建库!你的记忆力非常有限,所以回收是必须的。在最初的《超级马里奥兄弟》中,你会注意到云朵和灌木丛一样,唯一不同的是颜色。许多精灵被回收,游戏物理受到限制。
As games became more and more complicated developers moved onto the C language which allowed for software to be written a lot more quickly because it required less lines of code. Nowadays a lot of console and computer games are written in C++ because it allows for faster development but also allows for the software to be close enough to hardware for faster play.
我还没有对此进行研究,但超级马里奥兄弟和相关的 90 年代游戏都可以作为 .nes 文件而不是卡带使用,并且还可以使用开源模拟器。
AFAIK,这些通常是用 C++ 编写的。我不知道这些 nes 文件和模拟器的合法性,但它们可以在互联网上找到。你有正确的字符串搜索!