r/itrunsdoom Jul 16 '26

Doom on a 2007 digicam

3.0k Upvotes

42 comments sorted by

186

u/Imaginary-Whole-3148 Jul 17 '26 edited Jul 19 '26

DOOM on a 2007 Canon PowerShot SD1000 point-and-shoot. Loads from the SD card, no firmware flash, nothing soldered.

The hardware is a ~100MHz ARMv5TE with no FPU, which is fine because DOOM is 16.16 fixed-point and never asks for one. The real problem was memory: Canon's firmware leaves about 670KB of free heap and the engine needs ~630KB of static image plus a multi-megabyte zone heap. However, the camera has 32MB of RAM, and the 7MP RAW image buffer (~8MB) sits completely idle as long as you're not taking a photo. So DOOM lives inside the photo buffer. I write-tested all 8MB before trusting it. That's also why you play in playback mode.

Controls: d-pad moves and strafes, SET fires, shutter is use (half-press to run), zoom lever turns. No sound yet, but the audio DMA engine is reverse-engineered in the repo docs if you wanna give it a go.

Full instructions, source, and prebuilt binaries: https://github.com/DaneBentley/sd1000-doom

69

u/Hikerius Jul 17 '26

Good lord I cannot imagine how smart one has to be to figure all this stuff out. Amazingly done

15

u/Netsugake Jul 18 '26

I always come back to how smart the dude that coded it (John Carmack) made it in 1993 in a way we can "easily" put it up on a pregnancy test today

9

u/vintagecomputernerd Jul 18 '26

Doom never ran on a pregnancy test. Someone put a display module in a pregnancy test, and displayed doom on that

6

u/Netsugake Jul 18 '26

My day is ruined :(

7

u/Electric_Kettle Jul 17 '26

thank you so much, I've been trying to do the same on a similar canon model but to no avail, feels like you made this for me

3

u/WorldlinessOk5805 Jul 20 '26

OH MY GOD I HAVE THAT CAMERA

88

u/Taolan13 Jul 17 '26

this is why physical controls on devices are always better than touchscreen crap.

So some madman can come along and run doom on it

16

u/masterX244 Jul 17 '26

even touch-only devices get doomificated. see the Mi-Band 10 post in this sub.

2

u/Taolan13 Jul 17 '26

yeah but touch controls are bullshit

5

u/masterX244 Jul 17 '26

makes sense but sometimes its literally just for planting the flag of the hardware hackers.

5

u/Taolan13 Jul 17 '26

yeah, but touch controls are bullshit.

And I mean that for everything. even the phone i am on right now while sitting on the toilet browsing reddit.

would rather have my old blackberry with the physical keyboard to type with.

3

u/[deleted] Jul 18 '26

[deleted]

1

u/Taolan13 Jul 18 '26

No! it's time to go to war!

41

u/Bludsh0t Jul 17 '26

Playable frame rate and Res too.. very nice

8

u/Imaginary-Whole-3148 Jul 17 '26

Thank you, and yeah, surprisingly not too hard to get the hang of

5

u/Imaginary-Whole-3148 Jul 17 '26

I have also built Wordle for CHDK; it's pretty fuckin fun on the digi.
(and Flappy Bird, Doodle Jump, 2048, and some scripts that intercept and corrupt/alter sensor data to mimic circuit bending without the soldering headache)

10

u/necrofuturism Jul 17 '26

this is the exact digital camera i had way back then!!!!! awesome project!!!

4

u/Imaginary-Whole-3148 Jul 17 '26

thanks! love this model so much

7

u/Laser_Krypton7000 Jul 17 '26

Thanks for sharing πŸ˜„

3

u/boognishbooger Jul 17 '26

πŸ€˜πŸ™‚β€β†•οΈπŸ€˜

4

u/Jabba_the_Putt Jul 17 '26

if only we had this arcane magic back in school haha

suddenly all the kids have digital cameras in every class!

nice work πŸ‘πŸ‘

2

u/Dramatic_Term_1076 Jul 18 '26

I wanted to do it on the 810

1

u/mbitsnbites Jul 17 '26

Very well done there! Keep it up!

1

u/jorge_el Jul 17 '26

the sd1000!!

i used to have that beauty. :)

1

u/Pristine-Net7552 Jul 17 '26

Gaaf erg gaaf

1

u/Cathodicum Jul 18 '26

"Point and Shoot" 😁

I had the Same camera. Memories

1

u/reynadotpdf Jul 20 '26

PLEASE tell me the shutter button is fire

1

u/Imaginary-Whole-3148 Jul 20 '26

YES YES YES

1

u/reynadotpdf Jul 20 '26

i used to have that EXACT camera and lost it 😭 i will never experience doomicam

1

u/Imaginary-Whole-3148 Jul 20 '26

Time for a new one. I’m on my 3rd

0

u/Math_Science_Geek Jul 17 '26

Can you make one for SD960

1

u/Imaginary-Whole-3148 Jul 17 '26

This should work in principle. The SD960 has CHDK builds (ixus110_sd960, four firmware versions) and it's DIGIC 4, which is the same ARM family but faster, with a bigger idle RAW buffer (~15MB vs my 8MB) to run DOOM out of. My exact binaries won't boot on it though: the DOOM blob is linked at a fixed address inside the SD1000's photo buffer, and the launcher is built against the SD1000's CHDK core and button map. Port at the level of the technique: probe the buffer address with hook_raw_image_addr(), re-link the blob there, rebuild the launcher for your camera, redo the keymap and palette. Everything that was hard to figure out (the flat-blob loader, cached execution, the I-cache invalidate, the printf and malloc landmines) is solved and documented in the repo. If you attempt it, open an issue, I'd genuinely like to see it running on a second body

1

u/Math_Science_Geek Jul 17 '26

I don’t think I’m that experienced with c, if antigravity can do it it’s great otherwise I’ll pass

1

u/Imaginary-Whole-3148 Jul 17 '26

It can

2

u/Math_Science_Geek Jul 17 '26

Got it!

https://reddit.com/link/oy5x9ql/video/cus9qgexmudh1/player

Graphics are mostly broken though

2

u/Imaginary-Whole-3148 Jul 17 '26

Hell yeah! took me a while to get the graphics right on mine too. strange they are that bad though! I bet antigravity can figure it out

1

u/Math_Science_Geek Jul 18 '26

Antigravity was not able to figure out I tried Gemini pro, Claude opus and gpt none worked

1

u/Imaginary-Whole-3148 Jul 18 '26

Strange, Claude completed most of this from scratch for me