Sylvain Lefebvre's Latest FPGA Project Creates a Chip Dedicated to Playing Chahi's Out of This World
Running on a low-cost Lattice iCE40UP5K, this hardware implementation of the 1991 platform classic is an impressive achievement.
Developer and creator of the Silice language for field-programmable gate array (FPGA) work Sylvain Lefebvre has given a Lattice Semiconductor iCE40UP5K an unusual task: the implementation of platform adventure classic Another World in hardware.
"This project is my personal homage to Another World," Lefebvre explains. "This game is not only a graphical and gameplay masterpiece, it is also a technical marvel: the entire game runs on a beautifully designed Virtual Machine (VM) that calls only a blitter [bit block transfer unit] and rasterizer [vector to bitmap conversion unit] to produce the graphics in four framebuffers! The VM is quite minimalistic, and both the blitter and rasterizer are good candidates for hardware designs."
Released in 1991 by Delphine Software, and known as Out of This World in North America, Γric Chahi's Another World was a cinematic marvel which pushed the technology of the day to its limits β and which was notable for its ability to tell a story with as few words as possible, to the point of building a real bond between the player-character and his newfound alien ally despite a lack of shared language.
"This is not a 6502, not a Z80, not a 68000: this is an Out-Of-This-World-chip," Lefebvre explains of his design, which follows earlier work in porting other games β including Id Software's Wolfenstein 3D β to an FPGA. "I created a first minimalist SOC [System-on-Chip] with SPI memory and a skeleton of the VM."
This was followed, the developer continues, by the creation of the four required framebuffers for the graphics, a common display interface suitable for output to VGA, HDMI, or SPI displays, a blitter, a rasterizer, and a system to load the game data.
The result is a chip design, which runs on an FPGA but could be synthesized into a physical chip, dedicated to running Another World and Another World alone β entirely devoid of general-purpose hardware like a central processing unit. Despite the relatively limited resources of the Lattice iCE40UP5K, running in this example at 25MHz, it's also playable β though not quite complete.
"There's no sound and no music," Lefebvre admits. "Well, obviously I focused on graphics and making it playable. I think the sounds can be squeezed in, after regaining some LUTs [Look-Up Tables]. Music I am less certain, but perhaps we can also brute-force it with pre-rendered plain waves in ROM?"
Lefebvre's full write-up is available on GitHub, along with the project's source code under the reciprocal GNU General Public License 2. "The game data is copyrighted," Lefebvre explains of its absence, "so please go buy the game if you don't own multiple copies already. It's well worth it!"