我刚刚在youtube上观看了超级马里奥兄弟-1世界故障,我真的开始怀疑这些游戏背后的代码。使用了哪种语言?视频游戏控制台的操作系统怎么样?有没有关于这个主题的资源的网站? (我是一个90年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但是如果你愿意的话,可以随意把它作为一个wiki并包含有关视频游戏编程资源的链接)
答案 0 :(得分:10)
在NES上有一些仿真器(我解码了一些操作码,但其他硬件都没有模拟),我可以分享一些答案。
对于大多数游戏使用汇编程序。优化编译器(如果可用于CPU)在20 - 30年前远不如今天那么好。为了获得性能,你需要用汇编语言编写(这在PC上也是如此。部分Doom在ASM中)。更是如此,因为NES CPU的运行频率低于2MHz。此外,内存比现在更昂贵。最初的马里奥存储在大约40k的内存中。其中16k是实际代码,其余部分是图形和声音资源。
直到32位控制台时代,控制台上任何类型的操作系统,甚至是内置实用程序都不常见(Sega CD是16位时代少数几个拥有实际BIOS的人之一,而且Game Boy的处理器中有一个小程序,它负责打开Nintendo标志的电源。请参阅上文关于尺寸限制的主要原因。插入盒式磁带时,汽车中的ROM芯片直接连接到CPU的地址总线。上电时,CPU将从固定地址读取以获取程序启动时的实际地址,然后跳转到该位置并开始执行。
对于资源,NES Dev Wiki有关于NES硬件的资源以及编程参考。 Zophar的Domain也有很多控制台的技术文档和公共域ROM(我不知道我是否应该链接到这个网站上的ZD,只是google它)
答案 1 :(得分:2)
大多数旧款游戏机都有某种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 - 它有移动精灵的例程,读取控制器,并计算平方根!
答案 2 :(得分:1)
该视频中的大多数毛刺都是基于图块的毛刺,其中在构成水平的图块地图的碰撞检测中存在缺陷。所有级别均由方形瓷砖组成。如果你发现马里奥总是在他不应该的地方之间。
答案 3 :(得分:1)
早在70年代末,80年代和90年代初期,大多数软件(包括游戏)都是用ASM(Assembly)编写的。如果您不熟悉Assembly,它实际上是一种非常低级的编程语言,它是专门用于编程CPU的硬件。这意味着您必须控制屏幕上的每个像素,并为物理,图形甚至声音等事物重新创建库!你的记忆非常有限,所以回收是必须的。在最初的超级马里奥兄弟中你会注意到云与灌木丛是一样的,唯一不同的是颜色。许多精灵被回收,游戏物理学也受到限制。
随着游戏变得越来越复杂,开发人员转向使用C语言,这样可以更快地编写软件,因为它需要更少的代码行。如今很多控制台和计算机游戏都是用C ++编写的,因为它允许更快的开发,但也允许软件足够接近硬件以便更快地进行游戏。
答案 4 :(得分:-1)
我没有对此进行过研究,但是超级马里奥兄弟和90年代的游戏可以用.nes文件代替墨盒,还有开源模拟器。
AFAIK,这些通常用C ++编写。我不知道这些nes文件和模拟器的合法性,但它们可以在互联网上获得。你有正确的字符串搜索!