Skip to content

Commit d7f1a61

Browse files
committed
Match vimodes, vitbl
1 parent 9e39faf commit d7f1a61

File tree

5 files changed

+1904
-10
lines changed

5 files changed

+1904
-10
lines changed

include/PR/os.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,21 @@ typedef struct {
495495
#define OS_VI_MPAL_HPN2 40
496496
#define OS_VI_MPAL_HPF2 41
497497

498+
#define OS_VI_FPAL_LPN1 42 /* FPAL - Full screen PAL */
499+
#define OS_VI_FPAL_LPF1 43
500+
#define OS_VI_FPAL_LAN1 44
501+
#define OS_VI_FPAL_LAF1 45
502+
#define OS_VI_FPAL_LPN2 46
503+
#define OS_VI_FPAL_LPF2 47
504+
#define OS_VI_FPAL_LAN2 48
505+
#define OS_VI_FPAL_LAF2 49
506+
#define OS_VI_FPAL_HPN1 50
507+
#define OS_VI_FPAL_HPF1 51
508+
#define OS_VI_FPAL_HAN1 52
509+
#define OS_VI_FPAL_HAF1 53
510+
#define OS_VI_FPAL_HPN2 54
511+
#define OS_VI_FPAL_HPF2 55
512+
498513
/*
499514
* Video Interface (VI) special features
500515
*/

include/PR/rcp.h

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -587,14 +587,22 @@ The Indy development board use cartridge domain 1:
587587
/*
588588
* Patterns to interpret VI_CONTROL_REG
589589
*/
590-
#define VI_CTRL_TYPE_16 0x00002 /* Bit [1:0] pixel size: 16 bit */
591-
#define VI_CTRL_TYPE_32 0x00003 /* Bit [1:0] pixel size: 32 bit */
592-
#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* Bit 2: default = on */
593-
#define VI_CTRL_GAMMA_ON 0x00008 /* Bit 3: default = on */
594-
#define VI_CTRL_DIVOT_ON 0x00010 /* Bit 4: default = on */
595-
#define VI_CTRL_SERRATE_ON 0x00040 /* Bit 6: on if interlaced */
596-
#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* Bit [9:8] anti-alias mode */
597-
#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* Bit 16: dither-filter mode */
590+
#define VI_CTRL_TYPE_16 0x00002 /* [1:0] pixel size: 16 bit */
591+
#define VI_CTRL_TYPE_32 0x00003 /* [1:0] pixel size: 32 bit */
592+
#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* 2: default = on */
593+
#define VI_CTRL_GAMMA_ON 0x00008 /* 3: default = on */
594+
#define VI_CTRL_DIVOT_ON 0x00010 /* 4: default = on */
595+
#define VI_CTRL_SERRATE_ON 0x00040 /* 6: on if interlaced */
596+
#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* [9:8] anti-alias mode */
597+
#define VI_CTRL_ANTIALIAS_MODE_0 0x00000 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, always fetch extra lines */
598+
#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, fetch extra lines as-needed */
599+
#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 /* Bit [9:8] anti-alias mode: AA disabled, resampling enabled, operate as if everything is covered */
600+
#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 /* Bit [9:8] anti-alias mode: AA disabled, resampling disabled, replicate pixels */
601+
#define VI_CTRL_PIXEL_ADV_MASK 0x0F000 /* [15:12] pixel advance mode? */
602+
#define VI_CTRL_PIXEL_ADV_1 0x01000 /* Bit [15:12] pixel advance mode? */
603+
#define VI_CTRL_PIXEL_ADV_2 0x02000 /* Bit [15:12] pixel advance mode? */
604+
#define VI_CTRL_PIXEL_ADV_3 0x03000 /* Bit [15:12] pixel advance mode? */
605+
#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* 16: dither-filter mode */
598606

599607
/*
600608
* Possible video clocks (NTSC or PAL)

splat.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ segments:
317317
- [0x97880, .data, libultra/io/siacs]
318318
- [0x97890, .data, libultra/io/aisetnextbuf]
319319
- [0x978A0, .data, libultra/io/pimgr]
320-
- [0x978D0, data, libultra/vi/vitbl]
320+
- [0x978D0, .data, libultra/vi/vitbl]
321321
- [0x98A50, .data, libultra/os/timerintr]
322322
- [0x98A60, .data, libultra/io/vi]
323323
- [0x98AD0, .data, libultra/os/thread]
@@ -328,7 +328,7 @@ segments:
328328
- [0x98B60, .data, libultra/io/contramread]
329329
- [0x98B70, .data, libultra/io/piacs]
330330
- [0x98B80, .data, libultra/os/rdbsend]
331-
- [0x98B90, data, libultra/vi/vimodes]
331+
- [0x98B90, .data, libultra/vi/vimodes]
332332
- [0x98C80, .data, libultra/debug/kdebugserver]
333333
- [0x98C90, .data, libultra/libc/xprintf]
334334
- [0x98CE0, .data, libultra/rmon/rmoncmds]

src/libultra/vi/vimodes.c

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
#include "PR/os.h"
2+
#include "PR/rcp.h"
3+
#include "libultra/io/viint.h"
4+
5+
/**
6+
* PAL LAN1 Video Mode
7+
*
8+
* L = Low Resolution
9+
* A = Anti-Aliased
10+
* N = Non-Interlaced
11+
* 1 = 16-bit Framebuffer
12+
*/
13+
OSViMode osViModePalLan1 = {
14+
OS_VI_PAL_LAN1, // type
15+
{
16+
// comRegs
17+
VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 |
18+
VI_CTRL_PIXEL_ADV_3, // ctrl
19+
WIDTH(320), // width
20+
BURST(58, 30, 4, 69), // burst
21+
VSYNC(625), // vSync
22+
HSYNC(3177, 23), // hSync
23+
LEAP(3183, 3181), // leap
24+
HSTART(128, 768), // hStart
25+
SCALE(2, 0), // xScale
26+
VCURRENT(0), // vCurrent
27+
},
28+
{ // fldRegs
29+
{
30+
// [0]
31+
ORIGIN(640), // origin
32+
SCALE(1, 0), // yScale
33+
HSTART(95, 569), // vStart
34+
BURST(107, 2, 9, 0), // vBurst
35+
VINTR(2), // vIntr
36+
},
37+
{
38+
// [1]
39+
ORIGIN(640), // origin
40+
SCALE(1, 0), // yScale
41+
HSTART(95, 569), // vStart
42+
BURST(107, 2, 9, 0), // vBurst
43+
VINTR(2), // vIntr
44+
} },
45+
};
46+
47+
/**
48+
* MPAL LAN1 Video Mode
49+
*
50+
* L = Low Resolution
51+
* A = Anti-Aliased
52+
* N = Non-Interlaced
53+
* 1 = 16-bit Framebuffer
54+
*/
55+
OSViMode osViModeMpalLan1 = {
56+
OS_VI_MPAL_LAN1, // type
57+
{
58+
// comRegs
59+
VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 |
60+
VI_CTRL_PIXEL_ADV_3, // ctrl
61+
WIDTH(320), // width
62+
BURST(57, 30, 5, 70), // burst
63+
VSYNC(525), // vSync
64+
HSYNC(3089, 4), // hSync
65+
LEAP(3097, 3098), // leap
66+
HSTART(108, 748), // hStart
67+
SCALE(2, 0), // xScale
68+
VCURRENT(0), // vCurrent
69+
},
70+
{ // fldRegs
71+
{
72+
// [0]
73+
ORIGIN(640), // origin
74+
SCALE(1, 0), // yScale
75+
HSTART(37, 511), // vStart
76+
BURST(4, 2, 14, 0), // vBurst
77+
VINTR(2), // vIntr
78+
},
79+
{
80+
// [1]
81+
ORIGIN(640), // origin
82+
SCALE(1, 0), // yScale
83+
HSTART(37, 511), // vStart
84+
BURST(4, 2, 14, 0), // vBurst
85+
VINTR(2), // vIntr
86+
} },
87+
};
88+
89+
/**
90+
* NTSC LAN1 Video Mode
91+
*
92+
* L = Low Resolution
93+
* A = Anti-Aliased
94+
* N = Non-Interlaced
95+
* 1 = 16-bit Framebuffer
96+
*/
97+
OSViMode osViModeNtscLan1 = {
98+
OS_VI_NTSC_LAN1, // type
99+
{
100+
// comRegs
101+
VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 |
102+
VI_CTRL_PIXEL_ADV_3, // ctrl
103+
WIDTH(320), // width
104+
BURST(57, 34, 5, 62), // burst
105+
VSYNC(525), // vSync
106+
HSYNC(3093, 0), // hSync
107+
LEAP(3093, 3093), // leap
108+
HSTART(108, 748), // hStart
109+
SCALE(2, 0), // xScale
110+
VCURRENT(0), // vCurrent
111+
},
112+
{ // fldRegs
113+
{
114+
// [0]
115+
ORIGIN(640), // origin
116+
SCALE(1, 0), // yScale
117+
HSTART(37, 511), // vStart
118+
BURST(4, 2, 14, 0), // vBurst
119+
VINTR(2), // vIntr
120+
},
121+
{
122+
// [1]
123+
ORIGIN(640), // origin
124+
SCALE(1, 0), // yScale
125+
HSTART(37, 511), // vStart
126+
BURST(4, 2, 14, 0), // vBurst
127+
VINTR(2), // vIntr
128+
} },
129+
};

0 commit comments

Comments
 (0)