有没有经典的NES游戏是开源的?

我只是在浏览器窗口中打了一场RBI棒球比赛。

这本身就令我惊讶。 我年轻的时候,NES是一个神奇的盒子,能够为全世界的年轻孩子提供几个小时的享受。

现在,几十年后,我是一名程序员。 而且我可以欣赏几十年前用更原始的硬件开发的游戏编程。 实际上有一天,我完全期待这些游戏中的代码将被载入史密森学会。

我的编程问题:

有任何经典的NES游戏(如RBI棒球)是开源的,如果是的话,我可以在哪里find代码学习?

如果不这样做,是否有任何 NES游戏的源代码可供学习?

我认为从他们的例子中学习是值得的。

例如:

  • 他们使用了面向对象的编程吗?
  • 他们是否使用devise模式来保持代码的可维护性?

不,至less没有我知道的(而且我一直在寻找)。

NES出现在1983年的电子游戏崩溃之后,市场崩溃的主要原因是糟糕的游戏泛滥,引发客户不买单一游戏,因为没有办法知道游戏是好的。

所以任天堂在推出NES(以及所有其他游戏机,如SEGA的Master System)时,都决定只有经过批准的游戏才能获得释放,并且使得任何开源都成为违规与重罚的合同,原因是是因为没有公开API,就会让“自制”难以淹没市场。

今天任天堂在游戏方面要容易得多,在Wii上看到大量蹩脚的游戏,但是仍然没有一个游戏机允许你使用他们的“真正的”API,以避免洪水泛滥,甚至有人在Wii上使用了一个GPL引擎(ScummVM),造成了麻烦,因为释放任天堂系统的游戏来源是违约,GPL要求释放源代码,在这种情况下,游戏被拉下架子。

不,XNA和PS3 Linux并不是真正的控制台API,这两者都会严重限制你可以用控制台做什么。

也许你可以find自制软件,或反向工程游戏。 但我想这不是你问的。

有时也可以find重制和端口的来源,但是这些不使用控制台API。

也许你已经find了这个,但是Metroid(原始的,用于NES / Famicom)已经被拆开,代码(在漂亮的ASM中)被张贴在Romhacking.net上。

直接链接。

如果你对NES编程感兴趣,你应该查看第91集 – Tengen Reunion Retronauts 圆桌会议 。 (请注意这是播客的原始剧集91,更新的剧集可以在http://www.retronauts.com/find);

它基本上是一些前NES程序员回忆有关系统(和其他复古系统)的游戏开发。 他们偶尔会倾向于技术性的东西,这些都非常吸引人。

我从来没有在电子游戏行业工作过,但是我已经阅读了很多关于这个行业的文章,而且我经常和那些朋友交谈,所以我会试着解释一下游戏和游戏之间的区别其他应用程序,关于编程方法。

首先要了解的是游戏是一次性产品。 它不像电子表格或文字处理器,您可以在这里发布改进和扩展以前的代码库的新版本。

第二件事,就是你需要尽快释放游戏。 通常,在游戏中花费的时间越多,与其他游戏相比就越糟糕。 对于PC游戏来说,这种情况大部分都是如此,硬件的发展速度远远超过了游戏机世界,但仍然在很大程度上适用(即使在开发更好的工具和algorithm的情况下,即使使用相同的硬件,游戏也会变得更好)。

第三件事是通常游戏需要将硬件推到极限。 因此,如果使代码运行速度变慢,那么将所有优雅的模式拧紧,将使代码更加美观和可维护。

因此,在剖析旧的NES游戏源代码之后,我们所期望的仅仅是意大利面条代码,其中大部分都是用大量低级别的黑客手段与机器的体系结构紧密结合而编写的。

我希望我的回答对你有用。

如果您对NES游戏开发感兴趣,我会build议您查看nesdev.com 。 他们有详细的文件。

NES游戏仅在汇编程序中被开发(据我所知),而且我猜这些源代码在那么多年之后已经失去了很久。
无论如何,汇编源代码与机器代码并不遥远,因此它可能不会像C或Java代码那样暴露太多。
关于对象定位和devise模式,再次,它是汇编和80年代,不要指望任何。

你不可能find原始游戏的来源,但有很多的自制软件和一个相对成熟的工具链。 作为最喜欢的答案,谷歌是你的朋友。 但为了让你开始,这里是相对体面的教程:

http://www.bestdamnpodcastever.com/millerblog/?p=72通过“Wayback Machine”