2022-08-12 20:45:52 +01:00
|
|
|
|
2023-11-03 20:14:34 +00:00
|
|
|
## Things that are interesting about IpuDoom
|
2023-10-27 10:18:10 +00:00
|
|
|
|
|
|
|
|
- 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
|
2023-11-28 23:27:49 +00:00
|
|
|
- Avoid recursive algorithms, e.g. make a non-recursive Binary Space Partitioning algorithm
|
2023-10-27 10:18:10 +00:00
|
|
|
- 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
|
2023-11-03 20:14:34 +00:00
|
|
|
- Texture tiles also do colour mapping to create shadow effects (light dropoff)
|
2023-11-28 23:27:49 +00:00
|
|
|
- Render tiles issue dummy requests after finishing to allow unfinished tiles to keep syncing
|
2023-10-27 10:18:10 +00:00
|
|
|
|
2022-08-12 20:45:52 +01:00
|
|
|
|
2023-11-03 20:14:34 +00:00
|
|
|
|
|
|
|
|
### Places could save memory
|
|
|
|
|
- Transcendental lookups -> live calc
|
2023-11-25 20:08:45 +00:00
|
|
|
- `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?
|
2023-11-03 20:14:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
### Things I don't support, to make my life easier:
|
2022-08-12 20:45:52 +01:00
|
|
|
- gamemodes other than shareware
|
|
|
|
|
- multiplayer
|
2022-09-08 16:47:30 +00:00
|
|
|
- cheating
|