Skip to content

Commit 94964d2

Browse files
committed
Add VIDEO_GetRetraceRate
1 parent 9e0f467 commit 94964d2

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

gc/ogc/video.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void VIDEO_Set3D(bool threeD);
9797
*/
9898
u32 VIDEO_GetRetraceCount(void);
9999

100+
f32 VIDEO_GetRetraceRate(void);
100101

101102
/*!
102103
* \fn u32 VIDEO_GetNextField(void)

libogc/video.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2897,15 +2897,33 @@ u32 VIDEO_GetRetraceCount(void)
28972897
return retraceCount;
28982898
}
28992899

2900+
f32 VIDEO_GetRetraceRate(void)
2901+
{
2902+
u32 level;
2903+
f32 rate;
2904+
2905+
_CPU_ISR_Disable(level);
2906+
rate = 13500000.0f;
2907+
if(HorVer.nonInter==VI_PROGRESSIVE || HorVer.nonInter==VI_3D) rate = 27000000.0f;
2908+
2909+
rate /= currTiming->hlw;
2910+
rate /= currTiming->nhlines;
2911+
if(HorVer.fbMode==VI_XFBMODE_PSF) rate /= 2.0f;
2912+
_CPU_ISR_Restore(level);
2913+
2914+
return rate;
2915+
}
2916+
29002917
u32 VIDEO_GetNextField(void)
29012918
{
29022919
u32 level,field;
29032920

29042921
_CPU_ISR_Disable(level);
2905-
if(HorVer.fbMode<VI_XFBMODE_PSF) {
2922+
if(HorVer.fbMode==VI_XFBMODE_PSF) field = VI_FRAME;
2923+
else {
29062924
field = __getCurrentFieldEvenOdd();
29072925
field ^= (HorVer.adjustedDispPosY&1)^1;
2908-
} else field = VI_FRAME;
2926+
}
29092927
_CPU_ISR_Restore(level);
29102928

29112929
return field;

0 commit comments

Comments
 (0)