summaryrefslogtreecommitdiff
path: root/lib/ultralib/src/io/visetspecial.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ultralib/src/io/visetspecial.c')
-rw-r--r--lib/ultralib/src/io/visetspecial.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/ultralib/src/io/visetspecial.c b/lib/ultralib/src/io/visetspecial.c
index 0a288e5..24b4367 100644
--- a/lib/ultralib/src/io/visetspecial.c
+++ b/lib/ultralib/src/io/visetspecial.c
@@ -1,7 +1,7 @@
#include "PR/os_internal.h"
#include "PR/ultraerror.h"
#include "PR/rcp.h"
-#include "viint.h"
+#include "PRinternal/viint.h"
// TODO: this comes from a header
#ident "$Revision: 1.17 $"
@@ -15,6 +15,19 @@
#define OS_VI_SPECIAL_MAX OS_VI_DITHER_FILTER_OFF
#endif
+/**
+ * Configures VI "special features" to be applied on the next context swap.
+ *
+ * "Special features" refer to the mode bits in the Video Interface control register that enable effects such as gamma
+ * correction, gamma dither, dither filtering, anti-aliasing filtering and divot filtering. Configuring the same
+ * setting ON and OFF in the same call will result in OFF taking precedence.
+ *
+ * Any unrecognized bits will be ignored. Note that this is very intentional as in early revisions of retail N64
+ * hardware setting bit 5 in the `features` field of OSViContext may cause physical damage to the console once it is
+ * fed to VI_CONTROL_REG on next context swap.
+ *
+ * @param func OS_VI_*_ON / OS_VI_*_OFF bits to enable or disable a setting.
+ */
void osViSetSpecialFeatures(u32 func) {
register u32 saveMask;