Doom on Playdate

@jfaulken Any news on this?

1 Like

A little, nothing useful yet. I moved the project over to my Mac where my dev setup is more mature. I've also spent some time with the C dev loop doing some other small test projects.

Gonna fire it up now and see what I can get working.


Ok, got it to compile for the simulator! Title screen, attract mode and main menu work but it crashes when you start the game.

Gonna keep poking at it. If anyone wants to play around with it in the simulator here's the zipped pdx file: (2.2 MB)


GOOD NEWS EVERYONE. Got the build running on device!

When you start the game make sure not to touch any controls until the attract mode has started on its own. If you do it'll crash the Playdate and require a reboot. (2.2 MB)


Gonna clean up the build files a little and then put it on github.


Nice! I just tried it works really well now, no more crashes.

Congrats :+1:


Hey, Nic and Matt: how about PLAYDOOM as a name? :slight_smile:


Is this on github now?

This is amazing! quick question - can I and how do I change weapons?

Some time ago I saw online a new Doom Port that had the goal to be a bit easier to port.

While the project doesn't seem to be very active I still like that most of the platform code is very separated from the Doom code. So I wrote a version for the playdate and this time I've put it on GitHub.

The big advantage is that everything playdate related is in the main file so it is really easy to adapt the control, add options, improve 1-bit conversion, etc.

Running in the simulator. Dithering: Bayern 4x4 with noise

The current version runs in the simulator. It also boots on Playdate but it is not yet playable. The performance quickly drops until it crashes. I suspect there is a difference between clang and gcc because the playdate version has some weird behaviour and texture corruption.

Current Status
:white_check_mark: :desktop_computer: Playable in the simulator
:x: :playdate_black: Not playable but boots
:white_check_mark: :joystick: Basic control (move, shoot, interaction)
:x::sound: No music or sound effect

But one of the reason to dig back Doom is that I wanted to experiment a bit further with dithering.

In the first build I used ordered dithering with a big blue noise. I generally like how it can capture some finer details in an image and especially how gradients looks. However the image tend to be a bit blurry and also very ... noisy. That made the game not very enjoyable to play IMO.


I usually dislike Bayer filter since I find the visible structure distracting. However It make the game much more contrasty especially with a 2x2. We lose some details but elements tend to be a bit more visible with it.

What I wanted to do is adding some noise to Bayer to break down the structure and make the overall look a bit more grungy/natural.
At first I had issue with distribution of threshold values but I use a very straightforward method that overall give some nice result in my opinion.

Bayer 4x4
PureDoom-Bayern44 No noise
PureDoom-Bayern44-noisy With noise

Bayer 2x2
PureDoom-Bayern22 No noise
PureDoom-Bayern22-noisy With noise

In the build, you can option the option menu to change the Bayer filter and the level of noise. I am still not sure what has the best result yet. Bayer 4x4 with Noise 2 looks better, but Bayer 2x2 with Noise 2 is more readable overall until we are in very dark part of the levels.


Looks awesome! What about blue noise with some contrast boosting by some means? (In the lighting and/or in the textures themselves?)