OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
video.h
Go to the documentation of this file.
1
11
12#ifndef OPENSNES_VIDEO_H
13#define OPENSNES_VIDEO_H
14
15#include <snes/types.h>
16
17/*============================================================================
18 * Screen dimensions (NTSC visible area)
19 *============================================================================*/
20
22#define SCREEN_WIDTH 256
24#define SCREEN_HEIGHT 224
25
26/*============================================================================
27 * Background Modes
28 *============================================================================*/
29
34#define BG_MODE0 0
35#define BG_MODE1 1
36#define BG_MODE2 2
37#define BG_MODE3 3
38#define BG_MODE4 4
39#define BG_MODE5 5
40#define BG_MODE6 6
41#define BG_MODE7 7
43
48#define BG3_MODE1_PRIORITY_HIGH 0x08
50
70void setMode(u8 mode, u8 flags);
71
72/*============================================================================
73 * Palette
74 *============================================================================*/
75
88#define RGB(r, g, b) ((((b) & 31) << 10) | (((g) & 31) << 5) | ((r) & 31))
89
98#define RGB24(r, g, b) RGB((r) >> 3, (g) >> 3, (b) >> 3)
99
100/*============================================================================
101 * Layer Enable Constants (for REG_TM / REG_TS / setMainScreen / setSubScreen)
102 *============================================================================*/
103
108#define LAYER_BG1 0x01
109#define LAYER_BG2 0x02
110#define LAYER_BG3 0x04
111#define LAYER_BG4 0x08
112#define LAYER_OBJ 0x10
114
115/*============================================================================
116 * Screen Layer Control
117 *============================================================================*/
118
133#define setMainScreen(layers) (REG_TM = (u8)(layers))
134
147#define setSubScreen(layers) (REG_TS = (u8)(layers))
148
149/*============================================================================
150 * Palette Helpers
151 *============================================================================*/
152
168#define setColor(index, color) do { \
169 REG_CGADD = (u8)(index); \
170 REG_CGDATA = (u8)((color) & 0xFF); \
171 REG_CGDATA = (u8)(((color) >> 8) & 0xFF); \
172} while(0)
173
174/*============================================================================
175 * Screen Mode Extras — SETINI ($2133)
176 *============================================================================
177 * SETINI is write-only; all four setters compose their bit through a
178 * software shadow (same discipline as the NMITIMEN shadow), so they can
179 * be combined freely and never clobber each other.
180 *============================================================================*/
181
197
207
223
224/* SETINI bit 6, Mode 7 EXTBG, has its setter in mode7.h (mode7SetExtBg),
225 * composed through the same software copy. */
226
237
238#endif /* OPENSNES_VIDEO_H */
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:47
OpenSNES Standard Types.
void videoSetInterlace(u8 on)
Enable/disable screen interlace (SETINI bit 0).
void videoSetObjInterlace(u8 on)
Enable/disable sprite interlace (SETINI bit 1).
void videoSetOverscan(u8 on)
Enable/disable overscan (SETINI bit 2).
void videoSetPseudoHires(u8 on)
Enable/disable pseudo-hires (SETINI bit 3).
void setMode(u8 mode, u8 flags)
Set background mode.