Skip to content

Latest commit

 

History

History
28 lines (21 loc) · 1.25 KB

NOTES.md

File metadata and controls

28 lines (21 loc) · 1.25 KB

Things that are interesting about IpuDoom

  • Fixed precision int math
    • 64-bit int division
      • wasn't supported in the supervisor context, drop into a worker thread for each individual division, do double division
  • Avoid recursive algorithms, e.g. make a non-recursive Binary Space Partitioning algorithm
  • Split column rendering over 32 tiles
  • Memory
    • Save 50-60k of lookup tabes for transcendentals by using float functions
    • Store textures on other tiles, JIT-fetch as needed (by live patching exchange programs to select a tile)
      • Can call exchanges from deep in the call stack, don't need to exit the vertex
      • Texture tiles also do colour mapping to create shadow effects (light dropoff)
      • Render tiles issue dummy requests after finishing to allow unfinished tiles to keep syncing

Places could save memory

  • Transcendental lookups -> live calc
  • openings (used for masked objects) is 40K, surely can be smaller on striped render tiles
  • cut down on width of visplane.top/bottom, columnofs, etc due to samller screen widths
  • remove cachedheight, cacheddistance, cachedxstep, cachedystep?

Things I don't support, to make my life easier:

  • gamemodes other than shareware
  • multiplayer
  • cheating