sm64pc/lib/src/osCreateViManager.c

1087 lines
28 KiB
C

#include "libultra_internal.h"
OSViMode osViModeTable[] = {
/*osViModeNtscLpn1*/
{ /*type*/ 0,
/*comRegs*/
{ /*ctrl*/ 12814,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 525,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLpf1*/
{ /*type*/ 1,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLan1*/
{ /*type*/ 2,
/*comRegs*/
{ /*ctrl*/ 12574,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 525,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLaf1*/
{ /*type*/ 3,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLpn2*/
{ /*type*/ 4,
/*comRegs*/
{ /*ctrl*/ 13071,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 525,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLpf2*/
{ /*type*/ 5,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLan2*/
{ /*type*/ 6,
/*comRegs*/
{ /*ctrl*/ 12319,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 525,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscLaf2*/
{ /*type*/ 7,
/*comRegs*/
{ /*ctrl*/ 12383,
/*width*/ 320,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHpn1*/
{ /*type*/ 8,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 1280,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHpf1*/
{ /*type*/ 9,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 640,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHan1*/
{ /*type*/ 10,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 1280,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHaf1*/
{ /*type*/ 11,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 640,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHpn2*/
{ /*type*/ 12,
/*comRegs*/
{ /*ctrl*/ 13135,
/*width*/ 1280,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModeNtscHpf2*/
{ /*type*/ 13,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 640,
/*burst*/ 65348153,
/*vSync*/ 524,
/*hSync*/ 3093,
/*leap*/ 202705941,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
#ifdef VERSION_JP
/*osViModePalLpn1*/
{ /*type*/ 14,
/*comRegs*/
{ /*ctrl*/ 12814,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 625,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 } } },
/*osViModePalLpf1*/
{ /*type*/ 15,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalLan1*/
{ /*type*/ 16,
/*comRegs*/
{ /*ctrl*/ 12574,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 625,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 } } },
/*osViModePalLaf1*/
{ /*type*/ 17,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalLpn2*/
{ /*type*/ 18,
/*comRegs*/
{ /*ctrl*/ 13071,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 625,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 } } },
/*osViModePalLpf2*/
{ /*type*/ 19,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalLan2*/
{ /*type*/ 20,
/*comRegs*/
{ /*ctrl*/ 12319,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 625,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 590443,
/*vIntr*/ 2 } } },
/*osViModePalLaf2*/
{ /*type*/ 21,
/*comRegs*/
{ /*ctrl*/ 12383,
/*width*/ 320,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHpn1*/
{ /*type*/ 22,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 1280,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHpf1*/
{ /*type*/ 23,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 640,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHan1*/
{ /*type*/ 24,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 1280,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHaf1*/
{ /*type*/ 25,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 640,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHpn2*/
{ /*type*/ 26,
/*comRegs*/
{ /*ctrl*/ 13135,
/*width*/ 1280,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 1024,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
/*osViModePalHpf2*/
{ /*type*/ 27,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 640,
/*burst*/ 67380026,
/*vSync*/ 624,
/*hSync*/ 1379433,
/*leap*/ 208604270,
/*hStart*/ 8389376,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 6095415,
/*vBurst*/ 590443,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 33556480,
/*vStart*/ 6226489,
/*vBurst*/ 852585,
/*vIntr*/ 2 } } },
#else
/*osViModePalLpn1*/
{ /*type*/ 28,
/*comRegs*/
{ /*ctrl*/ 12814,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 525,
/*hSync*/ 265233,
/*leap*/ 202968090,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLpf1*/
{ /*type*/ 29,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLan1*/
{ /*type*/ 30,
/*comRegs*/
{ /*ctrl*/ 12574,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 525,
/*hSync*/ 265233,
/*leap*/ 202968090,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLaf1*/
{ /*type*/ 31,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 640,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 640,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLpn2*/
{ /*type*/ 32,
/*comRegs*/
{ /*ctrl*/ 13071,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 525,
/*hSync*/ 265233,
/*leap*/ 202968090,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLpf2*/
{ /*type*/ 33,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLan2*/
{ /*type*/ 34,
/*comRegs*/
{ /*ctrl*/ 12319,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 525,
/*hSync*/ 265233,
/*leap*/ 202968090,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalLaf2*/
{ /*type*/ 35,
/*comRegs*/
{ /*ctrl*/ 12383,
/*width*/ 320,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 512,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 16778240,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 1280,
/*yScale*/ 50332672,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHpn1*/
{ /*type*/ 36,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 1280,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHpf1*/
{ /*type*/ 37,
/*comRegs*/
{ /*ctrl*/ 12878,
/*width*/ 640,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHan1*/
{ /*type*/ 38,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 1280,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHaf1*/
{ /*type*/ 39,
/*comRegs*/
{ /*ctrl*/ 12382,
/*width*/ 640,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 1280,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHpn2*/
{ /*type*/ 40,
/*comRegs*/
{ /*ctrl*/ 13135,
/*width*/ 1280,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 1024,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 1024,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } },
/*osViModePalHpf2*/
{ /*type*/ 41,
/*comRegs*/
{ /*ctrl*/ 12879,
/*width*/ 640,
/*burst*/ 73735737,
/*vSync*/ 524,
/*hSync*/ 3088,
/*leap*/ 203164700,
/*hStart*/ 7078636,
/*xScale*/ 1024,
/*vCurrent*/ 0 },
/*fldRegs*/
{ { /*origin*/ 2560,
/*yScale*/ 33556480,
/*vStart*/ 2294269,
/*vBurst*/ 721410,
/*vIntr*/ 2 },
{ /*origin*/ 5120,
/*yScale*/ 33556480,
/*vStart*/ 2425343,
/*vBurst*/ 918020,
/*vIntr*/ 2 } } }
#endif
};
#define OS_VI_MANAGER_MESSAGE_BUFF_SIZE 5
OSMgrArgs viMgrMainArgs = { 0 };
OSThread viMgrThread;
u32 viMgrStack[0x400]; // stack bottom
OSMesgQueue __osViMesgQueue;
OSMesg viMgrMesgBuff[OS_VI_MANAGER_MESSAGE_BUFF_SIZE + 1];
typedef struct {
u16 unk00;
u8 unk02;
u32 unk04;
u8 pad[0xc];
u16 unk14;
u16 unk16;
} viMesgStruct;
viMesgStruct viEventViMesg;
viMesgStruct viEventCounterMesg;
extern void __osTimerServicesInit(void);
extern void __osTimerInterrupt(void);
extern OSTime _osCurrentTime;
extern u32 D_80365DA8;
extern u32 D_80365DAC;
void viMgrMain(void *);
void osCreateViManager(OSPri pri) {
u32 int_disabled;
OSPri newPri;
OSPri currentPri;
if (!viMgrMainArgs.initialized) {
__osTimerServicesInit();
osCreateMesgQueue(&__osViMesgQueue, &viMgrMesgBuff[0], OS_VI_MANAGER_MESSAGE_BUFF_SIZE);
viEventViMesg.unk00 = 13;
viEventViMesg.unk02 = 0;
viEventViMesg.unk04 = 0;
viEventCounterMesg.unk00 = 14;
viEventCounterMesg.unk02 = 0;
viEventCounterMesg.unk04 = 0;
osSetEventMesg(OS_EVENT_VI, &__osViMesgQueue, &viEventViMesg);
osSetEventMesg(OS_EVENT_COUNTER, &__osViMesgQueue, &viEventCounterMesg);
newPri = -1;
currentPri = osGetThreadPri(NULL);
if (currentPri < pri) {
newPri = currentPri;
osSetThreadPri(NULL, pri);
}
int_disabled = __osDisableInt();
viMgrMainArgs.initialized = TRUE;
viMgrMainArgs.mgrThread = &viMgrThread;
viMgrMainArgs.unk08 = &__osViMesgQueue;
viMgrMainArgs.unk0c = &__osViMesgQueue;
viMgrMainArgs.unk10 = NULL;
viMgrMainArgs.dma_func = NULL;
osCreateThread(&viMgrThread, 0, viMgrMain, (void *) &viMgrMainArgs, &viMgrStack[0x400], pri);
__osViInit();
osStartThread(&viMgrThread);
__osRestoreInt(int_disabled);
if (newPri != -1) {
osSetThreadPri(NULL, newPri);
}
}
}
void viMgrMain(void *vargs) {
OSViContext *context;
OSMgrArgs *args;
OSMesg mesg;
u32 sp28; // always 0
u32 sp24; // time related
mesg = NULL;
sp28 = FALSE;
context = __osViGetCurrentContext();
if ((viEventCounterMesg.unk14 = context->retraceCount) == 0) {
viEventCounterMesg.unk14 = 1;
}
args = (OSMgrArgs *) vargs;
while (1) {
osRecvMesg(args->unk0c, &mesg, OS_MESG_BLOCK);
switch (*(u16 *) mesg) {
case 13:
__osViSwapContext();
if (!--viEventCounterMesg.unk14) {
context = __osViGetCurrentContext();
if (context->mq != NULL) {
osSendMesg(context->mq, context->msg, OS_MESG_NOBLOCK);
}
viEventCounterMesg.unk14 = context->retraceCount;
}
D_80365DAC++;
if (sp28) {
sp24 = osGetCount();
_osCurrentTime = sp24;
sp28 = 0;
}
sp24 = D_80365DA8;
D_80365DA8 = osGetCount();
sp24 = D_80365DA8 - sp24;
_osCurrentTime = _osCurrentTime + sp24;
break;
case 14:
__osTimerInterrupt();
break;
}
}
}