BBC Tetris 伴侣

Hacker News Top 新闻

摘要

一位爱好者描述了一个正在进行的项目,为 BBC Bridge Companion(一款 1985 年基于 Z80 的游戏机)编写 Tetris 游戏,包括硬件规格和背景。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/07 14:10

# BBC 俄罗斯方块伴侣 来源:https://www.leadedsolder.com/2026/07/28/bbc-bridge-companion-part-1-overview.html 你是否曾为了朋友的打赌做过一些愚蠢的特技?我和一群老电脑圈不务正业的朋友混在一起时,话题聊到了 BBC Bridge Companion。他们说,这是一台毫无用处的机器,尽管在场的人里有很多人曾经都拥有一台。如果你不会打桥牌,那买它干嘛?嗯,我会玩《俄罗斯方块》,而且我会写 Z80 汇编,至少我自认为会。 在接下来的几个星期里,我会发布更多关于 *Bridgetris* 项目细节的深入文章。这篇帖子只是对整个项目的简要概述,让你大致了解整体任务和进展。 ## 通往过去的一座桥 Bridge Companion 放在我的地毯上。抱歉剧透了。 首先,说点历史。BBC Bridge Companion 到底是什么?为什么这台东西会消耗我的注意力和空闲时间,而且持续了简直荒谬、完全没有道理的时间?简而言之,BBC Bridge Companion 是一台由英国广播公司(BBC)推出的游戏主机,用来在电视机上教你打桥牌。它带有 BBC 品牌,因为当时 BBC 有一档非常受欢迎的桥牌教学电视节目《BBC Bridge Club》,由一些顶级牌手出演,他们正在寻找向新人介绍桥牌的新方法。 不过,我怀疑这东西没卖出多少台,因为根据维基百科,它在 1985 年上市时售价高达 200 英镑!你花 175 英镑就能买到一台 48K 的 ZX Spectrum(那是 1982 年的价格;到 1985 年可能便宜得多),而且还剩不少钱可以买桥牌游戏。我估计它后来肯定大幅降价,要么就是从没按那个价格卖出去过。 软件以 ROM 卡带形式分发,据我所知,它总共只出过九个卡带: 1. *Advanced Bidding* 2. *Advanced Defence* 3. *Bridge Builder* 4. *Club Play 1* 5. *Club Play 2* 6. *Club Play 3* 7. *Conventions 1* 8. *Duplicate 1* 9. *Master Play 1* 我没能找到这些卡带售价的记录,但肯定不便宜。每张卡带似乎都装在一个巨大的模压塑料保护盒里,附带一本厚厚的线圈装手册,包含大部分课程内容。*Bridge Builder* 是随系统附带的。 ## 来点规格 我感兴趣的是硬件。这东西用的是 Z80 CPU 和我们的老朋友 TI TMS VDP。具体来说,是 TMS9129——TMS9128 的 PAL 变体,而 TMS9128 本身又是 TMS9118 的 RGB 变体,后者就是你之前看到我从 Casio PV-7 MSX 里“驱魔”出来的那颗芯片。它甚至拥有“完整”的 16kB VRAM! 即使到了 1985 年,这也是相当强大的 8 位性能;几乎就是一台 ColecoVision。虽然我还没把所有卡带都试过,但 BBC Bridge Companion 的游戏并没有真正发挥那颗肥硕的 VDP 和 CPU 的能力: 正在玩 Advanced Defence ## 不需要罗伯特·马克斯韦尔 我觉得,至少试试让这台主机更开心一点,应该不算坏事。而且,自从[上一个项目](https://www.leadedsolder.com/tag/leako)以来,我已经很久没有做过一个像 Coleco 近亲平台上的傻气自制项目了。最坏的情况,我总可以把我的游戏移植到 ColecoVision 上,这样地球上至少还有另一个人能玩到。 我觉得我不是第一个尝试这件事的人:看起来 AtariAge 上的 cdoty 已经开始折腾[他们的 BBCBC](https://atariage.com/forums/topic/313772-tms-9129-question/)。 该为 Bridge Companion 做什么样的游戏?理想情况下,它应该是大家都喜欢、规则永恒、且有一定挑战性的东西。另外,你还需要能用主机顶部那些超级别扭的 ATM 式按钮来玩。答案只有一个:*俄罗斯方块*。或者更准确地说,一个*类俄罗斯方块*游戏。 这是真正的《俄罗斯方块》吗?Tetris Company 会说不:它没有完全遵循整个规则集,而且我也没有向他们支付任何许可费。这就是为什么我的游戏其实叫 *Bridgetris*,我相信大家都会同意,这个字母序列和那个会让我惹上法律麻烦的字母序列绝对不一样。 现在,我得坦白。虽然我有很多编写游戏的经验,而且在软件编程上经验更多,但直到最近我才刚刚做了一个类俄罗斯方块游戏。就像其他我永远在拖延的项目一样,这通常归结于一个心理障碍,而当我真正去解决问题时,发现其实没什么大不了的。出于某种原因,几十年来我一直坚信,方块旋转代码实际上非常复杂,需要大量繁琐的调整。 在疫情期间为了消磨无聊,我用 Rust 编写一个类俄罗斯方块游戏时,我发现事实上,大多数俄罗斯方块游戏中的“方块旋转”其实只是硬编码。你定义一个旋转中心,然后直接转过去。放不下?那就不要旋转[1](https://www.leadedsolder.com/2026/07/28/bbc-bridge-companion-part-1-overview.html#fn:wallkicks)。 这就是那个 Rust 类俄罗斯方块游戏,下面有一张截图证明它看起来确实有点像下落方块益智游戏: Rust 俄罗斯方块克隆,背景是一只 System 7.5 风格的猫,还有几个正在下落的方块。分数是 0,行数是 0,等级是 0,下一个下落的是一个 2x2 方块。 所以,这应该很简单。我现在只需要: 1. 搞清楚如何让一台我从没见过、而且实际上也没到手的游戏主机运行我自己的代码; 2. 用 Z80 汇编语言写一整个俄罗斯方块游戏,而我自从高中用 TI-83 Plus 编程以来,就再没写过比“hello world”更大的汇编程序; 3. 写关于这件事的博客。我现在就在写。你好! 简单! ## 骗过你的 Companion 在某些系统上,让它接受游戏 ROM 只需要把 ROM 放到 CPU 启动时会跳转的地址就行。Sega SG-1000 就是这样,它很容易编程。只要你的游戏出现在 $0000,Z80 CPU 一脱离复位状态就会自动运行它。 然而,和 ColecoVision 一样,BBC Bridge Companion 在内部 ROM 里有一个相当复杂的 BIOS。Bridge Companion 启动时,挂载在 $0000 的是那个 BIOS。如果 BIOS 不认为有卡带插着,它就会教训你,让你关掉系统然后插入卡带。 屏幕显示:“No. Please turn off Companion then plug in cartridge.” 那么,我们怎么让 BIOS 相信我们是一张合法的卡带?通过逆向工程 BIOS。我在 MAME 调试器里打开它,一步一步地单步执行,弄清 BBC Bridge Companion 到底要从卡带上的 ROM 里找什么。 经过几个晚上对比合法卡带和我自己初出茅庐的自制卡带后,我最终成功构建了一个能骗过 Companion、让它运行我写的代码的头部。 绿色屏幕,左上角有一个紫色模糊方块。它成功了! 从那里开始……BBC 就再也挡不住我了。 ## 编写游戏 虽然我之前用 Rust 写过游戏,但是从 Rust 这样的高级语言到用非常底层的汇编语言写东西,之间有一条巨大的鸿沟。汇编语言非常啰嗦:你需要精确描述计算机需要执行的每一个小步骤。 这很棒,因为这意味着计算机不会执行任何你不希望它执行的步骤,但这也意味着你可能很快就把脑海中的一个简单想法(“也许我应该让方块动起来”)变成 500 多行代码。 而且,我其实并不懂 Z80 汇编语言。我必须在做游戏的同时学习它及其各种有趣的怪癖。没人会推荐你这样生活,但效果出奇地好。不过,请别看我的代码。那堆意大利面条式的乱码已经糟到不能再糟了。 在写的过程中,我制造了 bug。 很多很多很多 bug。 太多的 bug。 一个可运行的类俄罗斯方块游戏展示。 事实证明,汇编语言其实相当简单有趣!你确实需要多思考一点。当我放弃了一些在高阶语言中会要求的“严谨性”,开始随心所欲地写之后,代码就开始流畅起来了。这才是真正的游戏开发课程,孩子们。 ## 额外奖励:修理我买的 Bridge Companion 在某个地方,有一个国家,Bridge Companion 是长在树上的。那里的《刺猬索尼克》音乐因为 PAL 而播放得太慢,而且一切都是黑白的。在遥远的过去,我必须登上摇晃的飞机,飞越整个世界,去享用这份收获。 BBC Bridge Companion 的盒子放在我的椅子上。 相反,我只是上了 eBay,花太多钱买了一台(带盒装!)属于我自己的 Bridge Companion。 Bridge Companion 卡带插槽的弯针。可以在这里插入你最喜欢的“英国牙”笑话。 当它寄到时,我失望地发现卡带插槽已经被弄坏了,针脚都弯得不成形。即使使用牙签和一些精心挑选的脏话,我也无法让卡带顺利读取甚至插入,只能更换插槽。找了好几个星期后,我终于把一个 AliExpress 替代品硬塞进了那个位置。 我终于能在自己的真机 Bridge Companion 上玩真正的游戏了。真正的游戏,比如我自己正在写的那个。 ## 发现真正的开发者 虽然这个话题肯定还有更多可以写,但我从包装上发现,一个叫 Heber 的公司制造了这套硬件。想象一下,当我看一个 RMC Retro 的视频时,发现他们是在 Heber 的老总部拍摄的,有多惊讶! 机壳底部写着:“Designed by HEBER Ltd.” 我立刻联系了他们,并从 Richard Horne 那里得到了一些文件,他参与了这台机器的设计。将来,我认为值得采访他,以获得更多关于该系统的一手资料,不过这系列文章已经够迟了。 ## 超级奖励:制作我自己的卡带 PCB Bridge Companion 的软件像其他 80 年代游戏系统一样,以卡带形式提供。我手头只有几张 Bridge Companion 卡带,而且不想为了调试游戏而把它们拆开。 原版卡带,包含一个 ROM 和一个逻辑芯片。 大多数卡带只是一个存储程序的 ROM 芯片。因为 Bridge Companion 卡带使用常见的 UV EPROM,我已经知道引脚排列。借助我可信赖的万用表的通断测试功能,我可以找出哪些引脚连接到那个 ROM,并制作一个与原版卡带 PCB 兼容的工作副本。 我设计的紫色 PCB,上面贴着一个写着“BBC Screen Test”的标签。 我还不止做了这些,但那是另一个故事了。 ## 超级加倍奖励:弄清复合视频改造 作为那个时代的产物,Bridge Companion 只能通过 Astec RF 调制器输出 RF 视频。如果我生活在 80 年代的英国,这会很简单:把机器插到切换盒上,用叉形接头连接到电视机天线输入,该玩桥牌时切换过去就行了。 今天可没那么容易:没错,我可以把它插到电视上,但有几个问题。加拿大的频道频率不一样,而且这个国家自从地面电视称王以来,世界已经变了很多。Bridge Companion 的 RF 效果不太好,尤其是通过转换器时: RF 转 AV 正在显示红色的“No.”画面。 更好的选择是使用复合视频。即使黄色插头也在从新电视上迅速消失,但它仍然是快速改善 Bridge Companion 视频质量的最佳选择[2](https://www.leadedsolder.com/2026/07/28/bbc-bridge-companion-part-1-overview.html#fn:tms9929)。 PCB 已组装并安装到 BBC Bridge Companion 主板上。 我花了很多时间仔细研究原理图扫描件(由前面提到的 Heber 的 Richard Horne 提供,谢谢你 Richard!),并用示波器测量各种电平,追求最高质量的改造方案。不过,最后我只是做了个非常简单的东西,类似[我早先的任天堂 Famicom 复合视频改造系列](https://www.leadedsolder.com/2021/06/15/famicom-composite-mod-v2.html)。 AV 改造正在以柔和的粉彩视觉模式显示一些基本颜色。 我觉得看起来相当不错! ## 接下来是什么? 感谢你读到这里,

相似文章

我探索所有Tetris的旅程

Lobsters Hottest

来自Antithesis的一篇详细博客文章,描述了他们的软件测试工具如何用于探索并实现Tetris中的‘重生’(达到255级),在此过程中克服挑战并发现故障。