Finally differentiating between colors and columns at least at the type level. Part of P0245, funded by [Anonymous], Blue Bolt, Ember2528, and Yanga.
Choosing C++ RAII wrappers because there's at least one case where ZUN misplaced a manual grcg_off(). This implementation combines safety with the optimal instructions for both dynamic and static use cases. Part of P0232, funded by [Anonymous].