Wolfenstein 3D Clone Makes Arduboy Debut

The 8-bit Arduboy isn’t exactly a powerhouse by modern gaming standards, or even really by old school standards for that matter. But for the talented developers that produce software for the system, that’s just part of the challenge. To date the monochromatic handheld has seen miniaturized takes on many well-known games, with several taxing the hardware beyond what most would have assumed possible.

But the latest entry into this catalog of improbable software, WolfenduinoFX, is easily the most technically impressive. As the name implies, this is a “demake” of 1992’s iconic Wolfenstein 3D. It features 10 levels based on the original game’s shareware release, with the enemies, weapons, and even secret rooms lovingly recreated for the Arduboy’s 128 x 64 OLED display.

Arduboy FX Mod-Chip

Now, those of you who have experience working with the ATMega32u4 microcontroller at the heart of the Arduboy might think this is impossible…and you’d be right. The only way developer [James Howard] was able to pull this feat off was by leveraging the extended flash memory offered by the Arduboy FX.

This upgrade, which was developed in conjunction with the community, allows the handheld to hold hundreds of games by loading them from an SPI flash chip. For WolfenduinoFX, that flash chip is used to hold graphical assets for the game that would otherwise be too large to fit on the MCU alone.

When we looked at the Arduboy FX back in 2021, it was clearly a must-have upgrade, so it’s no wonder that the newest version of the handheld has the capability built-in. Now that games are actually requiring the expanded flash to function, it seems we’ve officially entered into a new era for the quirky little handheld that [Kevin Bates] first sent our way nearly a decade ago. Long live the Arduboy!

12 thoughts on “Wolfenstein 3D Clone Makes Arduboy Debut

  1. It seems wasteful to include an entire MCU on the “mod-chip” and only utilize it to flash to bootloader of the old chip. They could have made it so that it can be used expressly for graphics or something like that and really boost the platform’s graphical capabilities. Just sayin’.

    1. We surveyed users, and most did not have a separate dev board to flash the bootloader. Even if they did, it would have to be configured properly. If they did not have a programmer, they would have to buy one and that would be a bigger waste. The attiny chip can still be communicated with and perform as a co-processor if you want. It sits on the SPI bus and has all of the pins connected to be reprogrammed by the 32u4. This also gives the ability to update the 32u4 bootloader via software in the future.

      1. I think it was a sensible choice bateske. It’s not like you bolted a raspberry pi 5 on there! And as you say, much less wasteful than expecting every user to source their own dev board for a one-off.

  2. Wow, that looks pretty smooth and playable and the graphics are pretty nice, especially considering the limitations of the display. A job well done. I would love to read more about the tech (coding tricks) behind it.

    1. Thanks for the kind words! Here are a few tidbits about development:

      Due to limited RAM on the microcontroller, there isn’t enough space to store state for every enemy on the map. The level is essentially ‘streamed in’ from the flash chip as you move around. Enemies are spawned in at the streaming boundary. If you kill an enemy, a bit is set in a bitmask to indicate they shouldn’t be spawned in again later. The same sort of thing happens for items and doors.

      All of the textures and sprites were remade for the demake with a black / white / grey palette and at runtime a dither pattern is applied for greys. If you look carefully then you can see that different dither patterns are applied for north/south walls to east/west to provide a subtle shading effect.
      The sprite rendering routine also adds outline pixels around the edges of the sprite after scaling so that the silhouette is maintained and helps make sprites more visible.

      Unlike the original game, the wall rendering does not use raycasting but rather does a projection of line segments from world space to screen space. Sort of more like DOOM in a way, except the texturing isn’t quite perspective correct. At this resolution and with the dithering, you don’t really noticed the texture projection errors.

      All of the code was written from scratch rather than adapting the original source code but I did carefully read through the weapon and enemy behaviour code to aim to make it as accurate as I could. Guard patrolling and sound propagation had to be dropped due to limited resources but I think it still plays just fine without those features.

      Earlier this year I also remade a CGA version of the Wolfenstein 3D renderer so I’m quite familiar with the code base now :)

      1. …extremely difficult to port to Z80 asm? Would it run on a 3.5Mhz Z80 cpu?
        Have this here 8bit computer, uses a 6847 video chip (4colour at 128×64). 2k video, 32kb ram.
        Be incredible to see this running on this specific 1983 computer.

        1. I’ve only ever seen the 16 colour EGA version of Catacomb Abyss. I was working on a Tandy/PCjr 16 colour mode renderer for Wolf3D as well but I haven’t finished it. I was planning to support the 3 voice sound chip and Tandy DAC for music and sound effects too.
          Here’s a Youtube link of it running in an emulator (I don’t have real hardware to test on)
          https://youtu.be/2OjxCX75tJ0

      2. Bloody amazing, well done! And thanks for sharing… it makes me want to dust off my own arduboy that was an impulse-buy a few years ago. Nice to see that other users have done more for the platform than I ever did :-)

    2. Death and violence are terrible things to be sure, but if I must inflict them on someone, who better than the Nazis? And if it was ever going to be fun, then surely it would involve killing Nazis.

      All kidding aside, it’s a game. Nobody takes it seriously, nobody goes off and starts killing neo Nazis (though again I can’t think of a better target for that). Studies have shown violent video games actually reduce violence, violent video games have been a net positive for humanity. Your bruised morals and ethics aside, nobody has actually been harmed by this.

    3. Basically it’s a game of “escape from the Nazi’s who are keeping you prisoner in Castle Wolfenstein”. The objective is not killing Nazi’s, but escaping from them.

      It’s >you yourself< who, in your mind, changed the objective of the game into "a game about killing Nazi's"…

      Your brain is always making things up, never forget that. And always question your opinions, lest a wrong opinion ruins your life.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.