以下内容摘自完美街机:《吃豆人》、《真人快打》和其他投币式经典游戏如何入侵客厅作者:大卫·L·克拉多克,提供平装本和 Kindle 版本格式。
丹尼尔·菲尔纳无法相信这一切正在发生。他十七岁,和他的朋友在乔治·卢卡斯的星球大战宇宙的中心天行者牧场闲逛。 “《星球大战》上映时我才七岁。这太棒了。”
菲尔纳十一岁时就开始了前往那个遥远星系的旅程,那是他第一次接触 Radio Shack 的 TRS-80 个人电脑。他的学校有一个,他的数学老师允许菲尔纳修改它,因为他领先于班上其他人。中学时期,他在暑假期间报名参加了编程课程,并在 Apple II 上学习了 BASIC。
菲尔纳诚实地源于他对数字的偏好。他的父亲是一名科学家,不希望他的儿子浪费时间在他听说过的雅达利或任天堂游戏机上玩电子游戏。作为妥协,他给他买了一台 TI-99/4A,德州仪器 (TI) 于 1981 年发布的个人电脑。只需花费 525 美元,这台电脑就配备了 3 兆赫兹处理器、256 字节内存,并且兼容存储介质,例如如盒式磁带、软盘和盒式磁带。
在那里,他的父亲一边说一边完成了电脑的设置。现在他的儿子可以学习实用技能,而不是把时间浪费在游戏上。当然,菲尔纳用他的新电脑做的第一件事就是编写游戏。 “当我七年级和八年级时,我正在尝试写作大金刚对于 PET,以及吃豆人对于 TI994A,只是尝试在我可以访问的家用计算机上重现街机游戏。我做得不是很好,但这就是我开始编程的方式,只是在家用电脑上重新创建街机游戏,主要是因为我没有 25 美分来投入街机游戏。”
吃豆人菲尔纳难住了。他正在用 BASIC 进行编程,无论他多么努力,四个幽灵都拒绝实时自由漫游,而他则引导冰球形状的角色绕着迷宫走。先是他动了,然后鬼魂也动了。 “我妈妈真的很喜欢它,”他回忆道。 “我记得我妈妈玩过它,我很失望,因为鬼魂不会自己移动。但我妈妈发现它更具战略意义,因为你必须在不浪费任何土地的情况下走完迷宫。”
当菲尔纳全家搬到加利福尼亚州时,他就收拾好了他的 TI。他的新学校有一台 Commodore PET,他努力重建大金刚以此获得稍微更好的结果。 “我车库里的某个地方有一盘磁带,上面贴着菲尔纳·孔,这是大金刚,”他说。
进入高中后,菲尔纳寻求更复杂的编程挑战。他的父亲买了一台 Atari ST,Filner 从 BASIC 发展到了汇编语言。他的目标是编写自己的 BBS(即公告板系统),这是一个在线留言板,用户可以在其中共享消息和文件。然后他的朋友蒂姆向他展示了一个游戏,名为球型西装外套是 Lucasfilm Games(后来更名为 LucasArts)为 Atari 800 PC 制作的动作游戏。他们很喜欢它,并决定将其移植到 ST。菲尔纳将游戏上传到一个 BBS,一名自称从事菲尔纳从小就梦想的工作的人联系了他。
“我十七岁了,他已经是个成年人了,他知道我是附近的一个公告牌操作员。他需要在他试图聚集的 BBS 上完成一些工作,但事实证明他一直从事游戏行业,而且他有联系。他看到了我们用 Atari ST 版本所做的事情球型西装外套,他让我们联系了卢卡斯影业游戏公司。”
卢卡斯影业邀请菲尔纳和蒂姆去天行者牧场。巡演结束后,高管们向他们颁发了一份完成合同球型西装外套对于ST。持续的时候很有趣。 “我们两个人的总金额可能还不到 2,000 美元,”菲尔纳说。 “我们是高中生。我们完成了它并开始工作,结果相当不错。但事实证明他们不打算发布它。它不会变成一件事,我们对此感到非常失望。”
一年后,菲尔纳在加州大学伯克利分校上课时接到了卢卡斯艺术公司经理的电话。他正在寻找一名程序员来为 Atari ST 版本编写声音驱动程序(一种在硬件和软件之间进行通信的文件)。扎克·麦克拉肯和外星人迷惑者,一款点击式冒险游戏,在该公司专有的 SCUMM(Maniac Mansion 脚本创建实用程序)引擎上运行。制片人联系了菲尔纳,因为他是熟悉 ST 的程序员名单中的一个。就这样,他又成为了绝地武士。
“我的意思是,他们给我寄了纸质支票,上面有尤达。我正在上大学,我赚的……不是生活工资,”菲尔纳停顿了一下后说道,“但比大学生需要的钱还要多,而且我正在获得计算机科学学位,并且已经开始专业工作。”
LucasArts 继续在 SCUMM 引擎上开发点击式冒险游戏。每个新游戏都引入了新功能,例如当角色靠近或远离屏幕时可以放大或缩小角色。菲尔纳继续担任承包商,移植游戏,例如织布机和疯狂大厦到雅达利 ST。该引擎的更高版本迫使他通过使用汇编和 C 的混合编写等方式来保持自己的技能。
在大学里,他的一门课程的重点是学习演讲。菲尔纳谈到了他最喜欢的主题:如何制作视频游戏。大约在同一时间,他参加了汇编语言课程。他的教授第一天迎接他们时说:“你永远不会真正需要使用这些东西”,因为像 C 这样的高级语言在朝九晚五的工作中更为普遍,比如为银行编写软件,但是,他承认,一些学生可能会发现它很有用。
菲尔纳坏笑着说道。 “这就像是,‘好吧,实际上,我现在使用这些东西是有报酬的。’”这不是一些假设。这实际上就是我正在做的事情。”
毕业后,菲尔纳在一家名为 Equilibrium 的公司找到了一份授权游戏编程的工作。他制作了一款由 Bo Jackson 主演的棒球游戏,一款授权《Attack of the Killer Tomatoes》角色的动作游戏,以及一款玩家表演说唱歌手 Vanilla Ice 流畅动作的游戏。一天下午,他接到一个人的电话,问他是否有兴趣制作一系列旧街机游戏。
菲尔纳吃了一惊。他不知道这个人是谁,也不知道他是如何得到他的电话号码的——但是,是的,他很感兴趣。
该公司是 Digital Eclipse,任务是获得后卫,星际之门,以及在 Sega Genesis 上运行的其他经典威廉姆斯游戏。 “那家伙说,‘好吧。这是 Genesis 开发套件。这是源代码后卫。看看你能不能做后卫工作。'这就像被授予皇冠上的宝石:看着后卫的源代码并看看它是如何工作的。我正在从 6809 汇编交叉翻译到 68000 汇编,”Filner 解释道,后者是 Genesis 处理的汇编方言。 “我必须从头到尾理解整个计划。”
每个威廉姆斯游戏都使用位图系统,将屏幕上的每个像素存储在内存寄存器中。最终产品的显示分辨率已经足够好了。两周后,菲尔纳给他在 Digital Eclipse 的联系人打电话,说他已经得到了后卫在职的。 “太好了,”那家伙说。 “现在做星际之门”。菲尔纳更快地完成了这项工作。他继续前进机器人机器人, 然后星星。
在他的下一份工作中,Digital Eclipse 希望菲尔纳将相同的系列转换到世嘉基于 CD 的游戏机 Saturn。他知道,这份工作是一个更高的障碍。他的创世转换是将游戏从一种语言翻译成另一种语言。土星需要一个模拟器。如果菲尔纳能够弄清楚模拟器如何运行以及如何编写模拟器,那么集合街机中的每一款复古游戏都将变得完美。幸运的是,DE 的一位工程师给了他一本入门书。 “你不必手动处理每一行的每一个字节,”菲尔纳说。 “你只需使用模拟器来工作,然后,繁荣 - 它以正确的方式出现。我想我以前从来没有这样想过,但我正处于游戏的交汇点,其中目标系统的功能不足以做一个模拟器,所以我必须为这个游戏构建一个模拟器我已经从上到下都知道了。”
在接下来的几年里,模拟经典游戏机和街机游戏成为菲尔纳的专长。他处理了卡普空经典合集,其中包括以下版本街头霸王2,Sega Genesis 游戏的选集,例如刺猬索尼克和金斧头,以及 Midway 的更多街机游戏。其中许多项目和其他项目都是 Digital Eclipse 根据合同交给他的,当时他已经进入了快速拨号状态。
“当他们得到街头霸王 30 周年纪念系列,他们立刻就知道这就是我能做的事情,”菲尔纳说。
✽✽✽
丹尼尔·菲尔纳希望与出版商合作时事情能朝着某种方向发展。希望,却没想到。
例如,他很少直接与像 Capcom 这样的业主交谈,因此他要求 Digital Eclipse 等承包商为他说话。他的要求街头霸王 30 周年纪念系列很简单,与每个涉及移植或仿真的项目相同:获取源代码。拥有游戏源就像在长途旅行中拥有 GPS 一样。没有它,他就只能上车开车。 “通常情况下,这种情况不会发生,”菲尔纳承认。 “这是非常困难的,因为源代码可能完全丢失或难以访问,而且他们不理解或不关心它是否有帮助,或者他们偏执于让它脱离他们的掌握。有时这种情况发生在项目结束后。”
街头霸王30号是一个特例。在进入该项目时,他已经拥有了一个个人图书馆顺丰他从 2000 年代初期就开始积累代码,当时他参与了各种 Capcom 选集的工作,其中包括各种风格的SFII。当时他是受雇工作,所以他编写的模拟器属于他的雇主。从那时起,他从头开始构建自己的版本,并在每次更新时进行更新街头霸王相关项目随之而来。
每个程序员都以自己的方式编写模拟器。无论采用什么方法,目标都是一样的。 “基本上,模拟器会伪装成另一块硬件,”Digital Eclipse 工作室负责人 Mike Mika 说道,他也是一位编写了自己的模拟器的工程师。
在每个仿真项目开始时,程序员都会考虑他们想要仿真的平台的技术布局:其处理器、内存、音频和视频芯片以及游戏代码的语言,该语言执行操作所有硬件的指令。大多数街机游戏都是用汇编语言编写的。游戏主处理器(CPU)的工作是逐条读取代码中的指令,并执行该指令指示其执行的操作:加值、减值、存储值、加载值、比较两个或多个值值,分支到代码的其他部分。 “模拟器的功能与 CPU 的功能相同,”Filner 解释道。 “它有一个指向程序计数器的数字,它通过从游戏 ROM 中读取来提取下一条指令。”
模拟器是不可知的。他们并不关心 CPU 试图运行什么游戏。它们只是等待指令并告诉 CPU 对它们采取行动。 “每个芯片,无论是声音芯片还是其他任何芯片,都遵循相同的基本模式,进行一些处理、产生输出、检查输入——无论它们是操纵杆输入、按下的按钮还是来自其他输入的输入。芯片,”菲尔纳继续说道。
动画的每一帧,模拟器都会产生两种类型的输出:以游戏的原始分辨率渲染的图像和音频流。模拟器的另一部分决定如何处理该输出。通常,这意味着放大图像以填充屏幕并将音频引导至输出通道(通常是一组扬声器)。 “模拟器的核心并不关心它在什么系统上。它只是生成一个位图和音频样本流,”菲尔纳说。 “如果你考虑一款 18 英寸见方的街机游戏,上面有 30 个芯片,其中一个是 CPU,一个可能是声音芯片,另一个可能是与声音芯片通信的另一个 CPU。模拟器只需要做硬件所做的事情。”
原始游戏如乒乓球由带有电子门的电路组成,并发送是或否、一或零的二进制信号。这使得它们很难在代码中精确地、一对一地重现。当技术允许工程师利用 CPU 和 RAM 芯片制作游戏时,大多数投币游戏制造商都会购买这些和其他现成的产品,而不是重新发明轮子。这些芯片和电路板中的每一个都附带文档,帮助他们了解如何构建他们想要构建的东西。
编写模拟器仍然是一门神秘的艺术,而不是一门科学,但像菲尔纳这样的爱好者和职业程序员通过追随投币机制造商的脚步,弥合了这一差距。当给定一个仿真项目时,他们尽量不要重新发明轮子。 “如果你考虑汽车零部件,这就好像有很多公司生产汽车,但这些公司都从三个零部件制造商那里获得零部件,”菲尔纳解释道。 “您可能拥有一辆配备 Z80 的汽车和另一辆配备 68000 处理器的汽车。外部可以看起来像他们想要的任何东西,但内部看起来就像每个人都知道如何使用的部件。如果您知道如何模拟这些部分,那么它都是模块化的。每个硬件系统的独特硬件数量仍然相当少。”
在某种程度上,模拟游戏很简单。一旦程序员了解了特定的硬件,他们就可以编写代码,以便模拟器(例如最流行的街机模拟器 MAME)支持它。当出版商要求进行更改时,棘手的部分就出现了。 “任何时候你需要以任何方式修改原始行为,它都会刺破模拟的面纱。你可以打破东西,”菲尔纳说。
回到鼎盛时期街头霸王2和忍者神龟,Capcom 和 Konami 等制造商提供了一个带有 FBI 徽标的屏幕以及现在与视频街机同义的报价,成功者不吸毒。 “最近,”菲尔纳回忆道,“一些天才律师说,‘屏幕上的联邦调查局律师是美国政府的商标。我们不一定仍然可以使用它,所以我们最好将其删除。什么?不,这是原版游戏的一部分。好吧,我不在法律部门,所以我无权问这些问题。他们只是说,‘请拿出 FBI 屏幕。’”
在开发原创游戏时,像撕掉屏幕一样直接进行更改很容易。对于无法访问源代码的仿真程序员来说,经典游戏是黑匣子。他们可以破解游戏的 ROM,将其反汇编,然后筛选代码以查找与该屏幕相关的说明,但这会带来风险。菲尔纳可能会意外损坏代码的其他部分。相反,他试图弄清楚如何从与需要删除的屏幕相关的指令跳到队列中的下一条指令。另一种选择是保持屏幕完整,但实施一种跳过它的方法。
发行商还倾向于要求更新游戏的版权屏幕以显示其重新发行的年份。这不像进行手术,而更像是拆除炸弹。 “版权信息是第一个有陷阱的东西,”菲尔纳说。 “当程序员试图防止盗版时,他们会有校验和”——游戏验证的一系列字符——“以及检查校验和的校验和。如果你被要求改变一些你认为可能被欺骗的东西,你必须非常小心,这样模拟器就无法告诉你已经更改了任何内容。”
菲尔纳选择的方法街头霸王30号是插入断点,即转移程序执行的路标,甚至不需要查看遗留代码,更不用说更改它了。 “断点意味着,在这条指令处,模拟器停止并调用这个 C++ 函数。 C++ 函数本质上是一个让世界停止运转的神奇手表:它发生在指令之间,如果你小心的话,你可以在原始程序没有注意到的情况下改变事情。”
随着菲尔纳深入研究 12 款游戏的代码,街头霸王30号,他必须按照 Capcom 的要求进行其他更改。每场比赛之前,街头霸王让玩家从几个以城市和国家为主题的阶段中进行选择。害羞的通过围绕每个角色的个性和他们国家的文化设计一个舞台,扩展了这种做法:Ryu 在日本的道场,Guile 的美国空军机库,背景中有一架喷气式飞机空转,士兵们在周围为他加油,对于春丽的市场来说,中国市场是一个活跃的市场。市民来回骑着自行车,小贩掐死一只鸡,一家人在商店的阴凉和安全的地方欢呼。这家人身后放着一堆板条箱,上面装饰着可口可乐的红底白字图标。另一件令人讨厌的物品,一罐可乐,放在古尔机库的地上。 “卡普空决定,‘也许我们不应该拥有这些,因为我们没有与可口可乐讨论此事,’”菲尔纳说。 “我必须把这些板条箱涂掉或擦掉,这样它们看起来就不像可口可乐[图像]。
“每一款游戏都有大约 64,000 个图块,所以有一个巨大的图块挂毯,地图和玩家角色精灵都是从这些图块列表中生成的,”他说。 “当需要进行这些修改时,我只是插入了覆盖的板条箱瓷砖。这些图块实际上并不是作为大位图存储在 ROM 中。为了进行这些更改,我必须编写一个转换器程序来获取 ROM 映像并将其转换为位图。然后我可以编辑位图,该工具必须将位图转换回 ROM 格式。”
改变几十年前的游戏内容的微妙细节,让菲尔纳对建立在保存游戏基础上的职业生涯有了不同的看法。 “这个特定的主题并不是真正的保护。这破坏了原始游戏的某些部分,从而使[再次销售]合法化。”
完美街机:《吃豆人》、《真人快打》和其他投币式经典游戏如何入侵客厅作者:大卫·L·克拉多克是提供平装本和 Kindle 版本格式。披露:David L. Craddock 是《Arcade Perfect》的作者,也是 Shacknews.com 的长篇读物编辑。此功能不被视为对他的书的认可
大卫·L·克拉多克 (David L. Craddock) 撰写小说、纪实作品和杂货清单。他是《Stay Awhile and Listen》系列和《Gairden Chronicles》系列青少年奇幻小说的作者。写作之余,他还喜欢玩《马里奥》、《塞尔达》和《黑暗之魂》游戏,并且很乐意详细讨论《黑暗之魂 2》成为该系列最佳游戏的无数原因。在线关注他:davidlraddock.com和@davidlcraddock。