我刚刚看了超级马里奥兄弟。-1 YouTube 中的世界故障,我真的开始想知道这些游戏背后的代码。使用哪种语言?视频游戏机的操作系统怎么样?有没有关于这个主题的资源的网站?(我是一名 90 年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但如果您愿意,可以随意将其设为 wiki,并包含有关视频游戏编程的资源链接)

有帮助吗?

解决方案

在开发了 NES 模拟器(我用它解码一些操作码,但没有模拟其他硬件)之后,我也许可以分享一些答案。

  1. 大多数游戏都使用汇编程序。优化编译器(如果适用于 CPU)在 20-30 年前远不如今天那么好。为了获得性能,您需要用汇编程序编写(这甚至在 PC 上也是如此。《毁灭战士》的部分内容位于 ASM 中)。更重要的是,因为 NES CPU 的运行频率低于 2MHz。而且,当时的内存比现在更贵。最初的马里奥存储在大约 40k 的内存中。其中 16k 是实际代码,其余的是图形和声音资源。

  2. 直到 32 位游戏机时代,任何类型的操作系统,甚至是内置的实用程序,在游戏机上都是不常见的(世嘉 CD 是 16 位时代为数不多的具有实际 BIOS 的光盘之一,并且烧录了一个小程序进入 Game Boy 的处理器,该处理器负责任天堂徽标在开机时向下滚动)。请参阅上文有关尺寸限制的内容,这是一个主要原因。当插入卡带时,车内的ROM芯片直接连接到CPU的地址总线上。上电时,CPU将从固定地址读取以获取程序启动的实际地址,然后跳转到该位置并开始执行。

就资源而言, NES 开发维基 拥有有关 NES 硬件的资源以及编程参考。Zophar 的域还拥有相当多的控制台的技术文档和公共域 ROM(我不知道是否应该链接到该网站上的 ZD,只需 google 即可)

其他提示

大多数较旧的游戏机都有某种 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#exechttp://www.beeslife.com/faq.htm#_Toc140592020 - 它有移动精灵、读取控制器和计算平方根的例程!

大多数在视频的毛刺是基于瓦片毛刺,那里有碰撞检测瓷砖的地图组成的水平错误。所有级别均采用方形砖了。如果您发现马里奥总是瓦之间,他不应该。

早在70年代末,80年代和90年代初,大多数软件(包括游戏)写在ASM(部件)。如果你不熟悉大会,它实际上是一个非常低级语言是特定硬件编程的CPU。这意味着,你不得不控制等许多事情上物理,图形,甚至声屏并重新创建库的每一个像素!您在内存都非常有限,因此回收是必须的。在原来的超级马里奥兄弟,你会发现,云一样的灌木丛,唯一不同的是颜色。很多精灵的被回收和游戏物理是有限的。

随着游戏成为移动到其允许软件,因为它需要较少的代码行,以更快速地写了很多C语言越来越复杂的开发者。如今很多的控制台和电脑游戏都是用C ++,因为它能够实现更快的发展,而且还允许软件为接近足够快的硬件发挥。

我没有带这个做过研究,但超级马里奥兄弟和相关型号90的游戏可作为.nes文件,而不是墨盒,有开源模拟器也可以。

AFAIK,这些通常用C ++编写。我不知道这些网元文件和仿真器的合法性,但他们提供互联网上。你有右搜索字符串!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top