Многие спрашивали, почему взрывы и другие визуальные эффекты на оригинальном PlayStation выглядели гораздо эффектнее, чем на Nintendo 64. Ответ кроется в технологии аддитивного смешения цветов, которая на приставке Сони была стандартом, а на Nintendo 64 практически не использовалась из-за технических ограничений. Процессор PlayStation мог применять четыре режима смешения пикселей, самый простой из которых просто прибавлял цвет спрайта к цвету фона в буфере. Это позволяло создавать светящиеся эффекты: при наложении объектов сцена становилась ярче, но никогда не темнела. Система автоматически ограничивала значения, так что цвет не выходил за пределы максимально возможной яркости.
На Nintendo 64 дело обстояло иначе. Его аппаратный блок Reality Display Processor (RDP) поддерживал гибкую систему Color Combiner, аналогичную функциям OpenGL, но имел критический недостаток — он не ограничивал результат вычислений. Когда при аддитивном смешении сумма цветов превышала максимальное значение в 255 для 8-битного цвета, происходило переполнение, и цвет «заворачивался» на ноль. Это портило реалистичные взрывы и магические заклинания в глитч. Разработчики могли рисовать эффекты на вспомогательном векторном процессоре RSP, но это усложняло работу с вращением и масштабированием объектов.
Автор проекта предложил оригинальное решение: использовать 32-битный буфер для отрисовки сцены, а не стандартные 16-битные, как делали почти все игры. Он заставил спрайты отображаться в темных тонах, чтобы после сложения цветов они достигли нужной яркости без переполнения. Однако обработка всего кадра на процессоре CPU занимала около 70 миллисекунд, что тормозило игру. Ключевым стал векторный процессор RSP, способный обработать восемь пикселей за один шаг. С помощью оптимизации микрокода и языка RSPL время прорисовки снизилось до 3,1 миллисекунды.
Несмотря на то, что работа с 32-битными буферами требовала в два раза больше памяти и времени, чем стандартные 16-битные, этот метод позволил реализовать красивые эффекты без артефактов. Автора также намеревается оптимизировать систему, рисуя на расширенном буфере только те спрайты, которым нужен аддитивный режим, а затем смешивая результат с остальной сценой на RSP. Исходный код для этого метода уже доступен на GitHub.