--- video.c.old	2008-04-22 19:53:38.000000000 +0200
+++ video.c	2008-04-07 19:00:27.000000000 +0200
@@ -1183,7 +1183,7 @@
 static u32 encoderType,fbSet = 0;
 static s16 displayOffsetH;
 static s16 displayOffsetV;
-static u32 currTvMode,changeMode;
+static u32 currTvMode,currTvInterlaceMode,changeMode;
 static u32 shdw_changeMode,flushFlag;
 static u64 changed,shdw_changed;
 static vu32 retraceCount;
@@ -1848,6 +1848,7 @@
 	shdw_changeMode = 0;
 	currTiming = HorVer.timing;
 	currTvMode = HorVer.tv;
+	currTvInterlaceMode = HorVer.nonInter;
 	
 	currentFb = nextFb;
 
@@ -2053,6 +2054,7 @@
 	if(HorVer.tv!=VI_DEBUG) vimode += (HorVer.tv<<2);
 	currTiming = __gettiming(vimode);
 	currTvMode = HorVer.tv;
+	currTvInterlaceMode = HorVer.nonInter;
 
 	regs[1] = _viReg[1];
 	HorVer.timing = currTiming;
@@ -2300,6 +2302,23 @@
 	return tv;
 }
 
+u32 VIDEO_GetCurrentTvInterlaceMode()
+{
+	u32 interlace;
+	u32 level;
+	u32 tv;
+
+	_CPU_ISR_Disable(level);
+	interlace = currTvInterlaceMode;
+
+	if(interlace==VI_NON_INTERLACE) tv = VI_NON_INTERLACE;
+	else if(interlace==VI_PROGRESSIVE) tv = VI_PROGRESSIVE;
+	else tv = VI_INTERLACE;
+	_CPU_ISR_Restore(level);
+
+	return tv;
+}
+
 u32 VIDEO_GetCurrentLine()
 {
 	u32 level,curr_hl = 0;
