雪茄盒里的童年

作者:Shawn Powers

我成长于 20 世纪 80 年代。这意味着我们喝了太多的酷爱饮料,并且在周六早上,我们早早起床看卡通片。那也是街机游戏的鼎盛时期,但我住在底特律的贫民区,买不起硬币玩游戏。而且,在我居住的社区附近也没有街机厅。对我来说,第一次真正的电子游戏体验是雅达利 2600。我在中学时玩了很多青蛙过河吃豆人亚尔的复仇。然而,真正对我产生影响的第一个系统是最初的任天堂娱乐系统 (NES)。

当我上八年级时,我家搬到了密歇根州北部,我整个夏天都在打工,为了从一个从父母那里得到全新超级任天堂的孩子那里攒钱买一台二手的 NES。我是一个贫穷的书呆子孩子,在八年级中途搬家,所以我的朋友圈很小。我只有一个朋友。碰巧任天堂有两个控制器,所以这对我和皮特来说非常完美。虽然我在 2007 年建造的街机系统(我的第一篇Linux Journal文章)可能是为了重温 20 世纪 80 年代,但本文的项目实际上更好地审视了我的真实童年。而且本文的项目非常棒

目标

我这个项目的最终目标如下

  • 在树莓派上使用模拟器玩任天堂和超级任天堂游戏。

  • 将项目装入木制雪茄盒(因为我已经有一个很酷的木制雪茄盒)。

  • 使用原装 NES 和 SNES 控制器,而不是 USB 仿制品。

  • 启动、选择和玩游戏,仅使用控制器导航菜单。

  • 使用原装连接器或 RJ-45 插头将控制器插入模拟机。

  • 有一个好的方法来打开和关闭机器,而不仅仅是拔掉插头。

  • 支持 HDMI,因为现在所有的电视和投影仪都使用 HDMI。

  • 支持游戏状态保存和恢复。(是的,这是作弊,但我已经 40 多岁了,所以如果我想在每次到达 Boss 关卡时节省 40 个小时的游戏时间,我就要这样做!)

得益于树莓派的尺寸,将这样的项目构建到几乎任何东西中都是可能的。我已经没有 NES 外壳了,但如果我有,我可能会把它装在里面以增加怀旧感。

我决定使用 RetroPie 作为我项目的发行版。使用 RetroPie 的好处在于它基本上解决了我列表中的所有问题。它内置了“Emulation Station”前端(图 1),支持通过控制器进行导航。它还预装了模拟器,等待添加 ROM。真的,使用 RetroPie 作为我的基础至少节省了一篇关于软件的文章!

图 1. 这是完成的系统。请注意工作正常的电源 LED 以及插入的两种类型的控制器。屏幕显示 Emulation Station 的前端。

此外,由于我使用的是令人难以置信的 RetroPie 软件,我可以轻松地向我的模拟器添加更多平台。例如,如果您是世嘉 Genesis 粉丝,您可以添加那些 ROM 并找回您自己童年的一部分。RetroPie 支持大约 20 个不同的平台!我只是想要任天堂和超级任天堂,但显然您可以支持您想要的任何游戏。

零件的超长清单

首先,重要的是要注意我已经断断续续地构建这台机器好几个月了。我不是一次性想出所有物品的清单;相反,在构建过程中,我会意识到我需要一些东西并订购它。我还决定“正确地”进行此构建,而不是像我的大多数项目那样。对我个人来说,这是一个巨大的范式转变,您不会在盒子里找到任何管道胶带。也就是说,请不要仅仅因为我这样做就购买所有这些零件。您的构建看起来会有所不同,尤其是在一开始的时候。管道胶带非常适合试验阶段,而且通常没有必要超越试验阶段!

这是我的清单

  • 雪茄盒(图 2):我在人行道促销时以 2 美元的价格买了这个。谢天谢地,里面没有任何雪茄。

  • 树莓派 3:我花了这么长时间才完成这个项目,我不得不买了两次新的 RPi,因为新的迭代不断出现!我从最初的 RPi B 开始,然后买了 2 版,最近买了带有 Wi-Fi 和蓝牙的 3 版。

  • ControlBlock(图 3):这是一个新设备,它非常棒。如果您愿意,可以直接使用 GPIO 引脚,但购买此设备使项目变得简单且非常出色。它价值 39 美元,物有所值。

  • 原装 SNES 和 NES 控制器:我从 Goodwill 和 eBay 购买了这些。我在 eBay 控制器上的成功率约为 50%。我怀疑它们只是磨损得非常厉害。我没有尝试过亚马逊上的售后市场产品,但它们可能会起作用。

  • SNES 和 NES 的延长线:我使用这些来制作连接器和适配器。它们来自亚马逊。

  • HDMI/USB 可安装延长线(图 4):这使我可以从盒子外部连接 HDMI 和 USB。我喜欢这个特殊的,因为它有一个圆形安装孔。圆孔比方孔更容易制作!

  • 齐平安装电源插座:我只是为项目使用 5V 电压,因此任何提供 5V 电压的电源都可以工作,即使是功率强大的手机充电器(2-3 安培)。

  • 焊接设备:我不太擅长焊接,所以我买了一个花哨的设备来固定焊接时的东西。务必也购买松香芯焊料。

  • LED 开关(拨动式)、尼龙支架(用于 RPi 安装)、电线、电阻器、用于电线的热缩管、开孔器、热熔胶以及可能 50 种我记不住的其他东西——也可能包括管道胶带,但我真的不这么认为!

图 2. 这是我使用的雪茄盒。它出奇地坚固,但显然不是构建类似产品的唯一选择。

图 3. petRockBlock 的 ControlBlock 非常棒。真的,它将这个项目提升到了一个新的水平。我再怎么推荐它都不为过。

图 4. 这个适配器来自亚马逊,这是我的作弊方式。我不擅长焊接,所以预制电缆非常棒。不幸的是,3 英尺长是最短的选择。

步骤——控制器

控制器的接线是最困难的部分,所以我从那里开始。关于 NES 和 SNES 控制器最酷的事情是它们使用完全相同的接线。SNES 只是有更多的按钮。这意味着您可以将它们插入相同的线束,并且它的工作原理相同。不幸的是,NES 和 SNES 具有不同的连接器,即使它们的引脚排列兼容(图 5)。这意味着如果我想拥有可互换的控制器,我必须使它们都插入相同的端口。我考虑过使用 RJ-45 连接器。我仍然认为这是一个非常好的主意,但想到要剪断所有这些原装控制器,我心都碎了。(我剪了一个 NES 控制器,差点哭了。)那时我想到了使用廉价延长线使两个控制器都能工作的想法。图 6 显示了我的雪茄盒正面和背面,SNES 延长线“控制台侧”已安装。这使我可以像原装 SNES 游戏机一样将 SNES 控制器直接插入盒子。

图 5. 虽然形状不同,但 NES 和 SNES 控制器使用完全相同的接线。这使得控制器也可以互换,这真是太棒了。

图 6. 安装孔很丑陋,但热熔胶可以掩盖许多罪恶。

为了插入 NES 控制器,我买了一根 NES 延长线(图 7),我将使用剩余一半的 SNES 延长线制作一个适配器电缆。我将能够将适配器电缆插入雪茄盒,然后将 NES 控制器插入适配器电缆的另一端。我永远不需要剪断实际的控制器,只需剪断廉价的延长线即可!(注意:要制作电缆,请查看图 5 中的引脚排列,并将每个延长线一半的相应电线连接在一起。我建议焊接这些连接并将它们密封在热缩管中。)

图 7. 我不介意剪断 7 美元的延长线。但我仍然希望我没有剪掉我的一个 NES 控制器的末端——这仍然让我感到难过。

步骤——树莓派

通常,我只会使用双面胶带将 RPi 固定。出于某种原因,我认为使用尼龙支架(来自亚马逊)会是一个好主意。如果您仔细观察(图 8),您会看到我第一次钻的孔不起作用,因为 HDMI 电缆连接器太大了。我不得不钻新的孔,以便为 HDMI 连接器和随附的 USB 连接器留出更多空间。所以,我在盒子的底部有四个额外的孔。也许我会用木腻子填充它们,但可能不会。

图 8. 如果您仔细观察,您可以看到我钻得不好的孔。您还可以看到我为什么要移动 RPi。HDMI 连接器太大了。

ControlBlock 直接安装在树莓派的 GPIO 引脚上。您不必使用尼龙支架,但由于我有一盒尼龙支架,我使用它们将 ControlBlock 安全地安装在树莓派的顶部。您会注意到 ControlBlock 具有非常好的用于电线的螺钉安装座。这意味着连接控制器不需要焊接。太棒了!用于连接 SNES(或 NES,它们是相同的)控制器的引脚排列在 petRockBlock 网站上。(图 9 中也显示了。)重要的是要注意,当控制器引脚排列说 5V 时,在连接到 ControlBlock 时,您使用 VCC 引脚,实际上是 3.3V。(树莓派在其 GPIO 引脚上使用 3.3V,因此 ControlBlock 使用它进行信号传输。显然这对控制器来说足够了,因为它似乎可以工作!)

图 9. SNES/NES 控制器仅使用一小部分 GPIO 引脚。如果您将 ControlBlock 用于街机设置,它支持更多的按钮。

ControlBlock 的另一个很酷的功能是它具有一种非常棒的打开和关闭树莓派电源的方法。您通过 MicroUSB 或通过焊接的 5V 引脚(我就是这样做的)向 ControlBlock 供电,然后连接一个拨动开关。当拨动开关“打开”时,树莓派启动。当它“关闭”时,树莓派正确关机,完成整个关机过程。此外,如果您连接 LED,它会在启动时缓慢闪烁,并在 RPi 启动时保持常亮。然后在关机时快速闪烁,并在树莓派关机时熄灭。它比仅仅拔掉设备插头来关机好得多!

步骤——其他

如果您回顾图 8,您会看到我连接的其他东西。电源线焊接到 ControlBlock,但也可以使用 MicroUSB 电源线代替。我将 HDMI/USB 延长线安装到雪茄盒的背面(图 10),并将电线插入 RPi。电缆长 3 英尺,这很不方便,但与其剪短并焊接它们,我只是将多余的部分盘起来并用热熔胶将其粘在盒子上。如果我更擅长焊接,我会获得真正的齐平安装 HDMI 和 USB 端口,并以这种方式连接它们。这是一个我很高兴的妥协方案。

图 10. 另一个作弊:HDMI/USB 齐平安装延长线需要我钻一个大的圆孔,而不是凿出一个方形安装孔。

我购买的拨动开关来自 Adafruit。它内置了一个 LED,因此我能够将 LED 和拨动开关直接连接到 ControlBlock。我没有意识到 LED 只是一个 2 或 3 伏的 LED,所以我烧坏了好几个,才意识到我必须在 LED 中串联一个电阻。我买了一整盒电阻,但实际上这个项目只需要一个 1000 欧姆的电阻。开关的安装是圆形的,所以同样,我可以只钻一个孔来安装它。如果您查看我的 SNES 控制器安装座,您会看到我真的没有用于任何异形形状的工具,如果不是大量热熔胶,SNES 控制器适配器永远不会保持不动!图 11 显示了我为完成此构建而购买的大部分垃圾。

图 11. 这是我收集的大部分东西,用于完成这个项目。那台树莓派是较旧的型号之一。我将把它重新用于其他用途!

软件

我之前提到过我使用 RetroPie 作为这台模拟机的发行版。它基于 Raspbian Linux,但它直接启动到 Emulation Station,并且它包含了大量模拟器的二进制文件。您需要做的唯一自定义是下载、编译和安装 ControlBlock 软件。就像我说的那样,即使您要使用 USB 控制器,也可以在没有 ControlBlock 的情况下创建一个这样的设备。但对我来说,39 美元非常值得。此外,这笔钱流向了一个开发它们并免费提供软件的个人。我买了三个 ControlBlock,我将把其他的用于新的街机。我不会详细介绍设置 ControlBlock 软件的过程,但如果您访问这里,您会找到非常简单的说明,这些说明与 RetroPie 完美配合。(只需注意:当涉及到配置 ControlBlock 配置文件时,即使您使用的是 NES,您也将使用“SNES”作为控制器类型——记住它们在软件看来是相同的;NES 控制器只是按钮较少。)

唯一其他与软件相关的工作是安装 ROM。如果您有一个具有网络功能的树莓派,它会设置一个名为“ROMS”的可写 SMB 访客共享,您可以连接到该共享并直接上传 ROM 文件。我不能告诉您在哪里可以找到游戏机系统的 ROM 文件,但 Google 是您的朋友。获取这些旧的 ROM 文件可能是一个在法律上存在疑问的程序,但至少有一些免费的 ROM 文件可用。

一旦您将 ROM 文件上传到相应的文件夹中,当您重新启动 RPi 时,将出现相应的模拟器供您选择游戏。在第一次运行时,它将让您设置控制器,但这只需要插入控制器;其余的是不言自明的。

接下来做什么?

现在您可以像 1989 年那样玩游戏了——或者可能是 20 世纪 90 年代初期,具体取决于您选择的平台。模拟效果非常惊人,如果您仔细查看配置选项,您会看到控制器有“Shift”键。这意味着在您玩游戏时,您可以按住选择键,然后按下控制器上的各种按钮来执行系统级操作,例如重置游戏,或保存和恢复保存的游戏状态。它真的就像原装游戏机,但更好。我无法解释使用原装控制器在巨大的 LCD 屏幕而不是旧的 19 英寸电视上玩这些旧游戏有多棒。

我的下一个游戏项目将是创建一个新的街机系统。我原来的街机在我们最近的搬家中幸存下来,所以我不得不(可以?)从头开始。这一次,我将使用树莓派和 ControlBlock 来模拟那些旧的街机经典游戏。在那之前,我对我的雪茄盒非常满意!

Shawn 是Linux Journal的副编辑,并且从一开始就接触 Linux。他对开源充满热情,并且热爱教学。他还喝太多咖啡,这常常在他的写作中表现出来。

加载 Disqus 评论