6 ms·
This thing even has networked multiplayer! In about 256K of RAM and 2MB flash! (It's the Raspberry Pi Pico board) Carmack would be proud!
by WithinReason 5y ago
This thing even has networked multiplayer! In about 256K of RAM and 2MB flash! (It's the Raspberry Pi Pico board)
Carmack would be proud!
- TillE 5y agoThose are important limitations, but there's a lot of room for solutions when you have a dual core CPU which is many times faster than a 486.
- WithinReason 5y agoDoom 1 itself has 4MB of RAM as a minimum requirement: https://www.computerhope.com/games/games/doomx.htm#doom https://www.computerhope.com/games/games/doomx.htm#doom
- billyhoffman 5y agoThe article talks about this and allows you access Flash as if it was very slow RAM (fronted with a 16K cache of actual RAM). This allows the author to do many things like directly access the levels and textures without loading them into RAM, And in fact storing them compressed and using the second core to uncompress them on the fly
- numpad0 5y agoIn layman’s approximation, could this be exactly how modern x86 CPU with multi-level caches work, or is it completely different from such things?
- erosenbe0 5y agoNot the same but not totally different. MCU abstraction is simple and more like vintage stuff. So it would closer to an 80s system that executed many routines from memory mapped ROMs -- in addition to system RAM -- with an instruction cache on CPU. MCUs can have on chip RAM/ROM and off chip [quad] serial RAM/ROM, and even parallel access RAM/ROM like FRAM. Several ways to skin the cat. Or cut the pie, as it were.
- vikingerik 5y agoMuch of that is for art assets. Do it with fewer or lower-resolution textures and sprites, and you could get away with quite a bit less. The executable code can fit in well under one megabyte. You could even procedurally-generate the art, if you've got way more CPU core available than storage. The SNES ran Doom with two 64k RAM banks (albeit with textures and data such as level geometry running directly from ROM.)
- WithinReason 5y agoThe SNES used a dumbed-down version of Doom: https://doom.fandom.com/wiki/Super_NES https://doom.fandom.com/wiki/Super_NES While this port makes it a point to port everything accurately, including multiplayer.
- tenebrisalietum 5y agoIn contrast with these limited platforms: SNES Doom - 128KB RAM, I think a 2MByte ROM, CPU is 65816 at 3Mhz + SuperFX RISC CPU at 21Mhz, which also had its own 64KB of RAM. PSX Doom - 2MB RAM + 1KB fast scratchpad, able to load from a standard 650MB CD, CPU is a MIPS R3051 at 33Mhz + the PSX accelerated graphics, not used except to draw strips So doing this in a device that has not too much more RAM than the SNES and also has to livestream the VGA signal Atari 2600 style is exceedingly impressive. It's a dual CPU unit but basically having to spend a core manually bit banging the VGA signal like that is what fascinated me the most.
- al2o3cr 5y agoFWIW, it's possible to bit-bang DVI at 640x480 on the 2040. Takes about half of the available resources: https://github.com/Wren6991/PicoDVI https://github.com/Wren6991/PicoDVI
- _Microft 5y agoI haven’t checked but don’t think that the second core was bitbanging the VGA signal. The RP2040 has PIO (programmable I/O) mini cores that can read directly from RAM (DMA) and address the GPIO pins directly. They most likely used that to their advantage. Edit: yes, see https://kilograham.github.io/rp2040-doom/rendering.html https://kilograham.github.io/rp2040-doom/rendering.html
- djmips 5y agoI'm not sure why you are just comparing RAM when the newer system has a huge advantage in being dual core and faster clock.