我只是在youtube上观看了超级马里奥兄弟-1世界故障,我真的开始怀疑这些游戏背后的代码。使用了哪种语言?视频游戏控制台的操作系统怎么样?有没有关于这个主题的资源的网站? (我是一个90年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但是如果你愿意的话,可以自由地制作一个wiki并包含有关视频游戏编程资源的链接)
我只是在youtube上观看了超级马里奥兄弟-1世界故障,我真的开始怀疑这些游戏背后的代码。使用了哪种语言?视频游戏控制台的操作系统怎么样?有没有关于这个主题的资源的网站? (我是一个90年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但是如果你愿意的话,可以自由地制作一个wiki并包含有关视频游戏编程资源的链接)
在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它)
大多数旧款游戏机都有某种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)编写的。如果您不熟悉Assembly,它实际上是一种非常低级的编程语言,它是专门用于编程CPU的硬件。这意味着您必须控制屏幕上的每个像素,并为物理,图形甚至声音等事物重新创建库!你的记忆非常有限,所以回收是必须的。在最初的超级马里奥兄弟中你会发现云与灌木丛相同,唯一不同的是颜色。许多精灵被回收,游戏物理学也受到限制。
随着游戏变得越来越复杂,开发人员转向使用C语言,这使得编写软件的速度更快,因为它需要更少的代码行。如今很多控制台和计算机游戏都是用C ++编写的,因为它允许更快的开发,但也允许软件足够接近硬件以便更快地播放。
我没有对此进行过研究,但是超级马里奥兄弟和90年代的游戏可以作为.nes文件而不是墨盒使用,还有开源模拟器。
AFAIK,这些通常用C ++编写。我不知道这些nes文件和模拟器的合法性,但它们可以在互联网上获得。你有正确的字符串搜索!