Introduction ============ These are my port notes for Quake. This runs, of course, on our SDL port. See <https://www.rockbox.org/wiki/SdlPluginPort> for more. Port Lineage ============ This port stems from SDLQuake (https://www.libsdl.org/projects/quake/), which was built on top of id Software's source release. How is <X> done? ================ Custom settings: This is implemented through a modification to Cmd_Exec_f and Key_Bind_f, in cmd.c and keys.c. Sound mixing: There is a handwritten assembly sound mixing routine in snd_mix_arm.S, using the ARMv5 DSP extensions for saturating addition. Disable that if you run into sound issues. File caching: There is an automatic caching layer in sys_sdl.c which loads files over 1 MB into memory. Quake only uses about 8 MB of heap when running, so there's plenty of space for this on some targets (e.g. ipods). Known bugs ========== SOLVED: Setting the sample rate to 44.1 KHz leads to all sorts of weird crashes, which stem (probably) from the same underlying memory corruption issue. Only thing is, it seems to occur only on hardware so it's a huge pain to debug. This issue turned out to be a synchronization issue when loading files from multiple threads. Fixed with some mutex locks. - 8/2/19 There is a weird crash that occurs on simulator only when playing the first demo. I've inserted a splash statement so we can watch for it on target. Optimization targets ==================== D_DrawZSpans, D_DrawSpans8, and Turbulent8 (in d_scan.c) should be fairly straightforward to write in assembly and are big time hogs. Make them fast!