IPUDOOM

A WIP to put Doom 1993 on the IPU.

# Install dependencies
sudo apt update 
sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libpng-dev g++-7
# Build binary
make
# Download shareware resource pack
wget https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad
# Run
./build/doom -iwad doom1.wad -width 320 -nosound -nomouse

Vanilla Doom runs on the CPU, have started offloading subsystems to IPU Tile 0. Activity Log:

  • Create IPU hooks for key methods like G_Ticker, G_Responder so IPU can step game time and respond to keypresses in real time. (Also setviewsize etc)

  • Implement IPU memory allocator for level state, i.e., anything with lifetime PU_LEVEL

  • IPU interacts with host to load and unpack all level geometry from disk whenever a level is loaded

  • Implement all methods used by the automap (vector rendering, sprite rendering, AM event responder). Automap is now disabled on CPU, renders entirely on IPU. automap

  • Implement BinarySpacePartion search (stackless recursion version for IPU), solidseg occlusion and floor/ceiling clipping to get (untextured) rendering of vertical walls running on the IPU. CPU still renders everything else.gameplay gif

Immediate next steps:

  • Port visplane system to get IPU rendering floors and ceilings?
  • Textures are too large to fit on a singe tile, so devise a mechanism for tiles to cooperate on texturing wall.

Longer term next steps:

  • Render other things in the level

  • Move beyond just the rendering?

    ...

  • Profit

Description
No description provided
Readme 19 MiB
Languages
C 95.7%
Gnuplot 2.3%
C++ 1.9%