Why a Neo Geo port of Doom is functionally impossible

Why a Neo Geo port of Doom is functionally impossible

为什么将《毁灭战士》(Doom)移植到 Neo Geo 上在功能上是不可能的

Here at Ars, we’ve taken pleasure in reporting on versions of Doom that run on everything from wireless earbuds and printers to Windows’ notepad.exe and even inside Doom itself. So when we hear that a piece of game-playing hardware from the ’90s (or later) can’t run Doom, our ears perk up. 在 Ars,我们一直乐于报道各种版本的《毁灭战士》,它们运行在从无线耳机、打印机到 Windows 的 notepad.exe,甚至是《毁灭战士》游戏内部等各种设备上。因此,当我们听说某款 90 年代(或更晚)的游戏硬件无法运行《毁灭战士》时,我们便竖起了耳朵。

That hardware is the Neo Geo, an early ’90s game console that players of a certain age will remember for its eye-watering launch price and its relatively strong pixel-pushing power for the time. Despite that relative power, though, a fascinating new video from Modern Vintage Gamer argues that the Neo Geo’s architecture makes it particularly ill-suited for a port of id’s famously easy-to-port game. 这款硬件就是 Neo Geo,这是一台 90 年代初的游戏主机。对于特定年龄段的玩家来说,它令人印象深刻的是其高昂的发布价格,以及在当时相对强劲的像素处理能力。然而,尽管拥有这种相对的性能,Modern Vintage Gamer 发布的一段引人入胜的新视频指出,Neo Geo 的架构使其特别不适合移植这款以“易于移植”而闻名的 id Software 游戏。

At first glance, the Neo Geo seems like it should be up to the task of running Doom. The Motorola 68000 CPU inside the console is the same one powering the Commodore Amiga, which has seen quite a few homebrew Doom ports over the years. But aside from a lack of memory, the Neo Geo was designed specifically and exclusively to handle sprite-based 2D graphics stored on a cartridge. 乍一看,Neo Geo 似乎应该能够胜任运行《毁灭战士》的任务。该主机内部的摩托罗拉 68000 CPU 与 Commodore Amiga 使用的是同一款处理器,而后者多年来已经出现了不少自制的《毁灭战士》移植版。但除了内存不足之外,Neo Geo 的设计初衷是专门且唯一用于处理存储在卡带上的基于精灵(sprite)的 2D 图形。

The CPU simply writes tile numbers, positions, and “shrink values” (for scaling) into VRAM, then lets the video processor fetch the appropriate sprites from the character ROM for display. That character ROM isn’t even addressable by the 68000 CPU’s bus, meaning the system can’t sample textures or read specific sprite pixels for post-processing, either. CPU 只是将图块编号、位置和“缩放值”(用于缩放)写入显存(VRAM),然后让视频处理器从字符 ROM 中提取相应的精灵进行显示。该字符 ROM 甚至无法通过 68000 CPU 的总线进行寻址,这意味着系统既无法采样纹理,也无法读取特定的精灵像素进行后期处理。

Unfortunately for potential Doom porters, the Neo Geo also lacks the kind of bitmap graphics mode that helps get around these sprite-based limitations. The system doesn’t have any frame buffers or Amiga-style bitplanes that would allow for unrestricted drawing of pixels to any part of the screen. That means even an entirely software-based Doom renderer on the Neo Geo would have no direct way to draw its results to the screen. 对于潜在的《毁灭战士》移植者来说不幸的是,Neo Geo 还缺乏那种有助于绕过这些基于精灵限制的位图图形模式。该系统没有任何帧缓冲区或 Amiga 风格的位平面,无法在屏幕的任何部分进行不受限制的像素绘制。这意味着即使是在 Neo Geo 上运行完全基于软件的《毁灭战士》渲染器,也无法直接将结果绘制到屏幕上。

Neo Wolfenstein

Neo 版本的《德军总部》

While those limitations might hold back a Neo Geo Doom port, the system may still be able to handle a simpler FPS like Wolfenstein 3D. Modern Vintage Gamer put together a simple Neo Geo raycasting demo for a video that approximates that game’s 90-degree walls, flat floors, and ceilings. The “walls” in this raycasting demo are simply 4-pixel-wide sprites that have been scaled up by the Neo Geo hardware. 虽然这些限制可能会阻碍《毁灭战士》在 Neo Geo 上的移植,但该系统或许仍能处理像《德军总部 3D》(Wolfenstein 3D)这样更简单的第一人称射击游戏。Modern Vintage Gamer 为视频制作了一个简单的 Neo Geo 光线投射演示,模拟了该游戏的 90 度墙壁、平坦地板和天花板。在这个光线投射演示中,“墙壁”仅仅是由 Neo Geo 硬件放大后的 4 像素宽的精灵。

The raycaster works by sending out rays from the player’s position to detect the distance to the first wall the player can see in that line. That data then determines the heights and colors for each of a set of 80 4-pixel-wide sprites arranged horizontally across the display, which act as pieces of wall. Since the Neo Geo’s scaling hardware can efficiently stretch those sprites vertically without much overhead, the raycasting data can be quickly converted into a chunky approximation of a first-person view. 光线投射器的工作原理是从玩家的位置发射射线,以检测玩家在该视线内能看到的第一个墙壁的距离。这些数据随后决定了水平排列在显示屏上的 80 个 4 像素宽精灵组的高度和颜色,它们充当了墙壁的片段。由于 Neo Geo 的缩放硬件可以高效地垂直拉伸这些精灵而无需太多开销,光线投射数据可以快速转换为第一人称视角的粗略近似图。

MVG’s simple, unoptimized Neo Geo raycaster currently runs at just eight frames per second via emulation without any of Wolfenstein 3D‘s enemies or game logic. And the raycasting system would still be wildly insufficient for Doom elements like raised platforms, staircases, elevators, textured walls and ceilings, etc. MVG 这个简单且未经优化的 Neo Geo 光线投射器目前通过模拟运行,帧率仅为每秒 8 帧,且不包含《德军总部 3D》的任何敌人或游戏逻辑。而且,对于《毁灭战士》中的抬高平台、楼梯、电梯、带纹理的墙壁和天花板等元素,这种光线投射系统仍然远远不够。

For all those reasons, MVG believes the only practical way to get Doom running on a Neo Geo is to pack additional hardware into the cartridge, much like the Super FX2 chip that powered the limited SNES port of the game. Failing that kind of extra processing power, he wagers that the system will likely remain Doom-free for the foreseeable future. 基于所有这些原因,MVG 认为让《毁灭战士》在 Neo Geo 上运行的唯一可行方法是在卡带中加入额外的硬件,就像当年为 SNES 版游戏提供支持的 Super FX2 芯片一样。如果没有这种额外的处理能力,他打赌在可预见的未来,该系统很可能依然无法运行《毁灭战士》。

“I don’t want to say it’s impossible because as soon as you say that something is impossible, the gauntlet has been thrown down,” MVG added. “我不想说这是不可能的,因为一旦你说某件事是不可能的,挑战书就已经下达了,”MVG 补充道。