# fast3d — software RSP A C++ interpreter that consumes the `Gfx` display list the game builds each frame and emits OpenGL calls, replacing the Nintendo 64's Reality Signal Processor and Reality Display Processor. ## Origin and license This code is **adapted from the [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark)** (`port/fast3d/`), which in turn is the [Ship of Harkinian](https://github.com/HarbourMasters) / libultraship fast3d, itself descended from [sm64-port](https://github.com/sm64-port/sm64-port). `LICENSE.txt` in this directory (MIT, © 2020 Emill, MaikelChan) covers that lineage. `glad/` is generated by [glad](https://github.com/Dav1dde/glad) (© David Herberth, MIT). GoldenEye-specific changes in this directory are under the repository's top-level MIT license. ## Files | File | Role | |---|---| | `gfx_pc.cpp` | the RSP interpreter — matrices, lights, fog, `G_TRI1`/`G_TRI4`, vtx | | `gfx_opengl.cpp` | OpenGL backend — shaders, textures, z-buffer, framebuffers | | `gfx_cc.cpp` | color-combiner equation -> GLSL shader | | `gfx_sdl2.cpp` | SDL2 window-manager backend | | `gfx_api.h` | public API (`gfx_init` / `gfx_run` / `gfx_start_frame` / ...) | | `gbiex.h` | GoldenEye custom GBI command definitions | | `glad/` | OpenGL loader | ## GoldenEye-specific work The PD fast3d already handles `G_TRI4` (GoldenEye uses it too). The GE additions are the custom color-combiner / render modes and the handling of GE's GBI extension commands. `rsp/graphics/gmain.s` (GE's real RSP microcode, in the repo root) is the ground truth for the exact command encodings.