复古视频游戏编程

13

我刚刚在YouTube上观看了超级马里奥兄弟-1世界的故障,我真的开始想知道那些游戏背后的代码。使用哪种语言?视频游戏机的操作系统是什么?是否有任何关于这个主题的资源网站?(我是90年代的电子游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但如果你愿意,可以把它变成维基,并包含有关视频游戏编程的资源链接)


你能链接到这个视频吗?哪里出了问题? - Ether
http://www.youtube.com/watch?v=JeHccUgn4hI - user103798
5个回答

11

我曾经为NES模拟器工作过一些时间(我让它解码了一些操作码,但是其他硬件都没有被模拟),我可以分享一些答案。

  1. 对于大多数游戏,使用的是汇编语言。20-30年前可用于CPU的优化编译器远不如今天好。要提高性能,你需要使用汇编语言(在PC上也是如此。Doom中的某些部分就是使用汇编语言编写的)。尤其是因为NES CPU运行速度不到2MHz,而且记忆体比今天更昂贵。原始的马里奥存储在大约40k的内存中,其中16k是实际代码,其余是图形和声音资源。

  2. 直到32位游戏机时代,任何类型的操作系统或内置实用程序在游戏机上都很少见(Sega CD是16位时代仅有的几个真正拥有BIOS的游戏机之一,而在Game Boy的处理器中烧入了一个小程序,负责在开机时滚动Nintendo的标志)。请参见上面关于尺寸限制的内容,这是主要原因。插入卡带时,卡上的ROM芯片直接连接到CPU的地址总线上。在开机时,CPU会从固定地址读取实际程序起始地址,然后跳转到该位置并开始执行。

至于资源,NES Dev Wiki提供了有关NES硬件的资源以及编程参考。Zophar's Domain还提供了很多游戏机的技术文档和公共领域ROM(我不知道在这个网站上是否应该链接到ZD,请谷歌一下)。


是其中少数具有实际BIOS的吗?- 你是指操作系统吗? - BlueRaja - Danny Pflughoeft

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#exechttp://www.beeslife.com/faq.htm#_Toc140592020 - 它具有移动精灵、读取控制器和计算平方根的例程!

Atari 2600 没有任何代码在其控制台中,所有的代码都在插卡中。 - user1671787

1

那个视频中大部分的故障都是基于图块的故障,即关卡地图的碰撞检测存在漏洞。所有的关卡都由正方形状的图块组成。如果你注意到马里奥总是在不应该出现的图块之间,那么这就是原因。


根据我所读的,-1世界的出现是因为游戏从各种不同的寄存器中请求信息,因此我对编程的总体架构产生了疑问。即使是碰撞检测也是一个概念,它是如何实现的也很有趣。 - user103798

1
在70年代末、80年代和90年代初,大多数软件(包括游戏)都是用汇编语言(ASM)编写的。如果您不熟悉汇编语言,它实际上是一种非常低级别的编程语言,专门用于编程CPU的硬件特定性。这意味着您必须控制屏幕上的每个像素,并重新创建物理、图形甚至声音库!由于内存非常有限,因此回收利用是必须的。在原始的超级马里奥兄弟游戏中,您会注意到云彩与灌木丛相同,唯一不同的是颜色。许多精灵被回收利用,游戏物理学也受到了限制。
随着游戏变得越来越复杂,开发人员转向C语言,因为它可以更快地编写软件,因为需要的代码行数更少。现在,许多控制台和计算机游戏都是用C++编写的,因为它允许更快的开发,同时也允许软件接近硬件,以获得更快的播放速度。

-1

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

据我所知,这些通常是用C++编写的。我不知道这些nes文件和模拟器的合法性,但它们可以在互联网上找到。你需要使用正确的搜索关键词!


1
游戏和控制台软件并非使用C++编写。还是你的意思是现在的模拟器? - Dominic Bou-Samra
嗨,Dominic,是的,我在谈论今天的模拟器(如nector等)。 - thatsalok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接