Updated video code

This commit is contained in:
pagefault
2002-04-18 17:33:04 +00:00
parent 164835aae8
commit 96051e76e3
2 changed files with 40 additions and 24 deletions

View File

@@ -47,10 +47,6 @@ NEWSYM copy640x480x16bwin
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,[WinVidMemStart] mov edi,[WinVidMemStart]
add esi,16*2+256*2+32*2 add esi,16*2+256*2+32*2
cmp word[resolutn],239
jne .not239
add esi,288*2
.not239
xor eax,eax xor eax,eax
; Check if interpolation mode ; Check if interpolation mode
cmp byte[FilteredGUI],0 cmp byte[FilteredGUI],0

View File

@@ -125,6 +125,7 @@ DWORD SurfaceY=0;
BYTE IsActivated = 1; BYTE IsActivated = 1;
BYTE AltTimer = 0; BYTE AltTimer = 0;
WORD PrevRes = 0;
RECT BlitArea; RECT BlitArea;
extern "C" { extern "C" {
@@ -1488,6 +1489,7 @@ extern unsigned char cvidmode;
DWORD FirstVid=1; DWORD FirstVid=1;
DWORD FirstFull=1; DWORD FirstFull=1;
extern BYTE GUIWFVID[]; extern BYTE GUIWFVID[];
extern unsigned short resolutn;
void clearwin(); void clearwin();
char WinName[]={"ZSNESW\0"}; char WinName[]={"ZSNESW\0"};
@@ -1529,7 +1531,7 @@ void initwinvideo(void)
WindowWidth=512; WindowWidth=512;
WindowHeight=448; WindowHeight=448;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=480;
break; break;
case 4: case 4:
WindowWidth=640; WindowWidth=640;
@@ -1539,7 +1541,7 @@ void initwinvideo(void)
WindowWidth=640; WindowWidth=640;
WindowHeight=480; WindowHeight=480;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 6: case 6:
WindowWidth=640; WindowWidth=640;
@@ -1551,7 +1553,7 @@ void initwinvideo(void)
WindowWidth=640; WindowWidth=640;
WindowHeight=480; WindowHeight=480;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 8: case 8:
WindowWidth=640; WindowWidth=640;
@@ -1565,7 +1567,7 @@ void initwinvideo(void)
WindowWidth=768; WindowWidth=768;
WindowHeight=672; WindowHeight=672;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=480;
break; break;
case 11: case 11:
WindowWidth=800; WindowWidth=800;
@@ -1575,7 +1577,7 @@ void initwinvideo(void)
WindowWidth=800; WindowWidth=800;
WindowHeight=600; WindowHeight=600;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 13: case 13:
WindowWidth=800; WindowWidth=800;
@@ -1591,7 +1593,7 @@ void initwinvideo(void)
WindowWidth=800; WindowWidth=800;
WindowHeight=600; WindowHeight=600;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 16: case 16:
WindowWidth=1024; WindowWidth=1024;
@@ -1601,7 +1603,7 @@ void initwinvideo(void)
WindowWidth=1024; WindowWidth=1024;
WindowHeight=768; WindowHeight=768;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 18: case 18:
WindowWidth=1024; WindowWidth=1024;
@@ -1617,7 +1619,7 @@ void initwinvideo(void)
WindowWidth=1024; WindowWidth=1024;
WindowHeight=768; WindowHeight=768;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 21: case 21:
WindowWidth=1024; WindowWidth=1024;
@@ -1627,7 +1629,7 @@ void initwinvideo(void)
WindowWidth=1024; WindowWidth=1024;
WindowHeight=896; WindowHeight=896;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=480;
break; break;
case 23: case 23:
WindowWidth=1280; WindowWidth=1280;
@@ -1637,7 +1639,7 @@ void initwinvideo(void)
WindowWidth=1280; WindowWidth=1280;
WindowHeight=960; WindowHeight=960;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 25: case 25:
WindowWidth=1280; WindowWidth=1280;
@@ -1653,7 +1655,7 @@ void initwinvideo(void)
WindowWidth=1280; WindowWidth=1280;
WindowHeight=960; WindowHeight=960;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 28: case 28:
WindowWidth=1280; WindowWidth=1280;
@@ -1663,7 +1665,7 @@ void initwinvideo(void)
WindowWidth=1280; WindowWidth=1280;
WindowHeight=1024; WindowHeight=1024;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
case 30: case 30:
WindowWidth=1280; WindowWidth=1280;
@@ -1679,7 +1681,7 @@ void initwinvideo(void)
WindowWidth=1280; WindowWidth=1280;
WindowHeight=1024; WindowHeight=1024;
SurfaceX=512; SurfaceX=512;
SurfaceY=464; SurfaceY=448;
break; break;
default: default:
WindowWidth=256; WindowWidth=256;
@@ -1689,9 +1691,15 @@ void initwinvideo(void)
BlitArea.top = 0; BlitArea.top = 0;
BlitArea.left = 0; BlitArea.left = 0;
BlitArea.bottom=SurfaceY;
BlitArea.right = SurfaceX; BlitArea.right = SurfaceX;
if (FullScreen == 0)
BlitArea.bottom = (SurfaceY/240)*resolutn;
else
BlitArea.bottom = (SurfaceY/224)*resolutn;
if (PrevRes == 0) PrevRes = resolutn;
} }
if (((PrevStereoSound!=StereoSound)||(PrevSoundQuality!=SoundQuality))&&FirstSound!=1) if (((PrevStereoSound!=StereoSound)||(PrevSoundQuality!=SoundQuality))&&FirstSound!=1)
@@ -1798,7 +1806,6 @@ extern int DSPBuffer;
int * DSPBuffer1; int * DSPBuffer1;
DWORD ScreenPtr; DWORD ScreenPtr;
DWORD ScreenPtr2; DWORD ScreenPtr2;
extern unsigned short resolutn;
extern GUI36hzcall(void); extern GUI36hzcall(void);
extern Game60hzcall(void); extern Game60hzcall(void);
extern int packettimeleft[256]; extern int packettimeleft[256];
@@ -2077,8 +2084,21 @@ void drawscreenwin(void)
ScreenPtr=vidbuffer; ScreenPtr=vidbuffer;
ScreenPtr+=16*2+32*2+256*2; ScreenPtr+=16*2+32*2+256*2;
if (resolutn == 224 && FullScreen == 0) BlitArea.bottom = SurfaceY-16; if (resolutn == 224 && FullScreen == 0 && PrevRes != resolutn)
if (resolutn == 239 && FullScreen == 0) BlitArea.bottom = SurfaceY-16; {
BlitArea.bottom = (SurfaceY/240)*224;
WindowHeight = (WindowHeight/239)*224;
initwinvideo();
PrevRes = resolutn;
}
if (resolutn == 239 && FullScreen == 0 && PrevRes != resolutn)
{
BlitArea.bottom = (SurfaceY/240)*239;
WindowHeight = (WindowHeight/224)*239;
initwinvideo();
PrevRes = resolutn;
}
SurfBufD=(DWORD) &SurfBuf[0]; SurfBufD=(DWORD) &SurfBuf[0];
SURFDW=(DWORD *) &SurfBuf[0]; SURFDW=(DWORD *) &SurfBuf[0];
@@ -2385,7 +2405,7 @@ void drawscreenwin(void)
} }
} }
if (SurfaceX==512&&SurfaceY==464) if (SurfaceX==512&&SurfaceY==448||SurfaceY==480)
{ {
switch (BitDepth) switch (BitDepth)
{ {