问题 复古电子游戏编程


我只是在youtube上观看了超级马里奥兄弟-1世界故障,我真的开始怀疑这些游戏背后的代码。使用了哪种语言?视频游戏控制台的操作系统怎么样?有没有关于这个主题的资源的网站? (我是一个90年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但是如果你愿意的话,可以自由地制作一个wiki并包含有关视频游戏编程资源的链接)


8997
2018-06-14 03:56


起源

你能链接到这个视频吗?什么毛刺? - Ether
youtube.com/watch?v=JeHccUgn4hI


答案:


在NES的模拟器上做了一些工作(我解码了一些操作码,但没有其他硬件被模拟),我可以分享一些答案。

  1. 对于大多数游戏使用汇编程序。优化编译器(如果可用于CPU)在20 - 30年前远不如今天那么好。为了获得性能,你需要用汇编语言编写(这甚至在PC上也是如此。部分Doom在ASM中)。更是如此,因为NES CPU的运行频率低于2MHz。此外,内存比现在更昂贵。最初的马里奥存储在大约40k的内存中。其中16k是实际代码,剩下的是图形和声音资源。

  2. 直到32位控制台时代,控制台上任何类型的操作系统,甚至内置实用程序都不常见(Sega CD是16位时代少数几个拥有实际BIOS的人之一,并且有一个小程序被烧毁进入Game Boy的处理器,该处理器负责打开电源时的Nintendo徽标。以上是关于尺寸限制的主要原因。插入盒式磁带时,汽车中的ROM芯片直接连接到CPU的地址总线。上电时,CPU将从固定地址读取以获取程序启动时的实际地址,然后跳转到该位置并开始执行。

至于资源, NES Dev Wiki 有关于NES硬件的资源,以及编程参考。 Zophar的Domain也有很多控制台的技术文档和公共域ROM(我不知道我是否应该链接到这个网站上的ZD,只是google它)


10
2018-06-14 04:37



was one of the few...with an actual BIOS  - 你的意思是OS? - BlueRaja - Danny Pflughoeft


大多数旧款游戏机都有某种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  - 它有移动精灵,读取控制器和计算平方根的例程!


2
2018-06-14 21:05



并且Atari 2600在其控制台中没有任何代码,所有代码都在盒式磁带中。 - user1671787


该视频中的大多数毛刺都是基于图块的毛刺,其中在构成水平的图块地图的碰撞检测中存在缺陷。所有级别均由方形瓷砖组成。如果你注意到马里奥总是在他不应该的地方之间。


1
2018-06-14 21:13



真正。从我读到的-1世界发生,因为游戏要求来自各种不同寄存器的信息,所以我想知道编程的一般架构。即使碰撞检测也是一个概念,它的实现方式也很有趣。


早在70年代末,80年代和90年代初期,大多数软件(包括游戏)都是用ASM(Assembly)编写的。如果您不熟悉Assembly,它实际上是一种非常低级的编程语言,它是专门用于编程CPU的硬件。这意味着您必须控制屏幕上的每个像素,并为物理,图形甚至声音等事物重新创建库!你的记忆非常有限,所以回收是必须的。在最初的超级马里奥兄弟中你会发现云与灌木丛相同,唯一不同的是颜色。许多精灵被回收,游戏物理学也受到限制。

随着游戏变得越来越复杂,开发人员转向使用C语言,这使得编写软件的速度更快,因为它需要更少的代码行。如今很多控制台和计算机游戏都是用C ++编写的,因为它允许更快的开发,但也允许软件足够接近硬件以便更快地播放。


1
2017-11-06 19:03





我没有对此进行过研究,但是超级马里奥兄弟和90年代的游戏可以作为.nes文件而不是墨盒使用,还有开源模拟器。

AFAIK,这些通常用C ++编写。我不知道这些nes文件和模拟器的合法性,但它们可以在互联网上获得。你有正确的字符串搜索!


-1
2018-06-14 04:05



游戏和控制台软件不是用C ++编写的。或者你是说现在的模拟器? - Dominic Bou-Samra
嗨多米尼克,是的我在谈论今天的模拟器(如nector等) - thatsalok