Started moving out some ASM video code out of C files

This commit is contained in:
pagefault
2003-02-23 03:27:58 +00:00
parent 84d38d7cd1
commit c8e54760f2
4 changed files with 53 additions and 66 deletions

View File

@@ -1 +1 @@
/Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj zlib.lib libpng.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw /Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj video\sw_draw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj zlib.lib libpng.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw

View File

@@ -49,7 +49,7 @@ VIDEOBJ=${VIDEODIR}/makev16b.obj ${VIDEODIR}/makev16t.obj ${VIDEODIR}/makevid.ob
${VIDEODIR}/mode7ext.obj ${VIDEODIR}/mv16tms.obj ${VIDEODIR}/newg162.obj\ ${VIDEODIR}/mode7ext.obj ${VIDEODIR}/mv16tms.obj ${VIDEODIR}/newg162.obj\
${VIDEODIR}/newgfx16.obj ${VIDEODIR}/newgfx2.obj ${VIDEODIR}/newgfx.obj\ ${VIDEODIR}/newgfx16.obj ${VIDEODIR}/newgfx2.obj ${VIDEODIR}/newgfx.obj\
${VIDEODIR}/m716text.obj ${VIDEODIR}/2xsaiw.obj\ ${VIDEODIR}/m716text.obj ${VIDEODIR}/2xsaiw.obj\
${VIDEODIR}/procvid.obj ${VIDEODIR}/procvid.obj ${VIDEODIR}/sw_draw.obj
WINOBJ=${WINDIR}/copyvwin.obj ${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj\ WINOBJ=${WINDIR}/copyvwin.obj ${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj\
${WINDIR}/zloaderw.obj ${WINDIR}/ztcp.obj ${WINDIR}/zipxw.obj\ ${WINDIR}/zloaderw.obj ${WINDIR}/ztcp.obj ${WINDIR}/zipxw.obj\

View File

@@ -45,6 +45,28 @@ NEWSYM ClearWin16
popad popad
ret ret
NEWSYM ClearWin32
push es
mov ax,ds
mov es,ax
xor eax,eax
mov edi, [SurfBufD]
xor ebx,ebx
.Blank3:
xor eax,eax
mov ecx, [SurfaceX]
rep stosd
add edi, [pitch]
sub edi, [SurfaceX]
sub edi, [SurfaceX]
sub edi, [SurfaceX]
sub edi, [SurfaceX]
add ebx,1
cmp ebx, [SurfaceY]
jne .Blank3
pop es
ret
NEWSYM DrawWin256x224x16 NEWSYM DrawWin256x224x16
pushad pushad
mov esi, [ScreenPtr] mov esi, [ScreenPtr]

View File

@@ -120,16 +120,17 @@ int MouseMove2X;
int MouseMove2Y; int MouseMove2Y;
BYTE MouseButtonPressed; BYTE MouseButtonPressed;
DWORD SurfaceX=0;
DWORD SurfaceY=0;
BYTE IsActivated=1; BYTE IsActivated=1;
BYTE AltTimer=0; BYTE AltTimer=0;
WORD PrevRes=0; WORD PrevRes=0;
RECT BlitArea; RECT BlitArea;
extern "C" { extern "C" {
DWORD MouseButton; DWORD MouseButton;
DWORD SurfaceX=0;
DWORD SurfaceY=0;
} }
static char dinput8_dll[] = {"dinput8.dll\0"}; static char dinput8_dll[] = {"dinput8.dll\0"};
@@ -1409,7 +1410,7 @@ unsigned char Noise[]={ 27,232,234,138,187,246,176,81,25,241,1,127,154,190,195,1
157,205,27,21,107,63,85,164}; 157,205,27,21,107,63,85,164};
int X, Y; int X, Y;
DWORD Temp1; DWORD pitch;
MSG msg; MSG msg;
DWORD SurfBufD; DWORD SurfBufD;
int count, x,count2; int count, x,count2;
@@ -2015,14 +2016,16 @@ extern unsigned char * WinVidMemStart;
extern void copy640x480x16bwin(void); extern void copy640x480x16bwin(void);
extern unsigned char NGNoTransp; extern unsigned char NGNoTransp;
extern unsigned char newengen; extern unsigned char newengen;
extern void ClearWin16();
extern void ClearWin32();
void clearwin() void clearwin()
{ {
DWORD i,j,color32; DWORD i,j,color32;
DWORD *SURFDW; DWORD *SURFDW;
Temp1=LockSurface(); pitch=LockSurface();
if (Temp1==0) { return; } if (pitch==0) { return; }
SurfBufD=(DWORD) &SurfBuf[0]; SurfBufD=(DWORD) &SurfBuf[0];
SURFDW=(DWORD *) &SurfBuf[0]; SURFDW=(DWORD *) &SurfBuf[0];
@@ -2030,48 +2033,10 @@ void clearwin()
switch (BitDepth) switch (BitDepth)
{ {
case 16: case 16:
_asm { ClearWin16();
push es
mov ax,ds
mov es,ax
xor eax,eax
mov edi,SurfBufD
xor ebx,ebx
Blank2:
xor eax,eax
mov ecx,SurfaceX
rep stosw
add edi,Temp1
sub edi,SurfaceX
sub edi,SurfaceX
add ebx,1
cmp ebx,SurfaceY
jne Blank2
pop es // BUGFIX
}
break; break;
case 32: case 32:
_asm { ClearWin32();
push es
mov ax,ds
mov es,ax
xor eax,eax
mov edi,SurfBufD
xor ebx,ebx
Blank3:
xor eax,eax
mov ecx,SurfaceX
rep stosd
add edi,Temp1
sub edi,SurfaceX
sub edi,SurfaceX
sub edi,SurfaceX
sub edi,SurfaceX
add ebx,1
cmp ebx,SurfaceY
jne Blank3
pop es // BUGFIX
}
break; break;
} }
UnlockSurface(); UnlockSurface();
@@ -2093,7 +2058,7 @@ void drawscreenwin(void)
UpdateVFrame(); UpdateVFrame();
if (curblank!=0) return; if (curblank!=0) return;
if (!(Temp1 = LockSurface())) if (!(pitch = LockSurface()))
{ {
DD_Primary->Restore(); DD_Primary->Restore();
DD_CFB->Restore(); DD_CFB->Restore();
@@ -2151,7 +2116,7 @@ void drawscreenwin(void)
dec ecx dec ecx
jnz CopyLoop jnz CopyLoop
inc eax inc eax
add edi,Temp1 add edi,pitch
sub edi,512 sub edi,512
sub esi,512 sub esi,512
add esi,576 add esi,576
@@ -2177,7 +2142,7 @@ void drawscreenwin(void)
mov ecx,128 mov ecx,128
rep movsd rep movsd
inc eax inc eax
add edi,Temp1 add edi,pitch
sub edi,512 sub edi,512
sub esi,512 sub esi,512
add esi,576 add esi,576
@@ -2213,7 +2178,7 @@ void drawscreenwin(void)
jnz CopyLoop32b jnz CopyLoop32b
pop eax pop eax
inc eax inc eax
add edi,Temp1 add edi,pitch
sub edi,1024 sub edi,1024
sub esi,512 sub esi,512
add esi,576 add esi,576
@@ -2222,7 +2187,7 @@ void drawscreenwin(void)
pop es pop es
} }
SURFDW=(DWORD *) &SurfBuf[(resolutn-1)*Temp1]; SURFDW=(DWORD *) &SurfBuf[(resolutn-1)*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<256;i++) for(i=0;i<256;i++)
@@ -2230,7 +2195,7 @@ void drawscreenwin(void)
SURFDW[i]=color32; SURFDW[i]=color32;
} }
SURFDW=(DWORD *) &SurfBuf[resolutn*Temp1]; SURFDW=(DWORD *) &SurfBuf[resolutn*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<256;i++) for(i=0;i<256;i++)
@@ -2277,7 +2242,7 @@ void drawscreenwin(void)
mov ecx,160 mov ecx,160
rep stosd rep stosd
sub edi,640 sub edi,640
add edi,Temp1 add edi,pitch
add ebx,1 add ebx,1
cmp ebx,8 cmp ebx,8
jne Blank1MMX jne Blank1MMX
@@ -2309,7 +2274,7 @@ void drawscreenwin(void)
dec ecx dec ecx
jnz MMXLoopC jnz MMXLoopC
inc ebx inc ebx
add edi,Temp1 add edi,pitch
sub edi,640 sub edi,640
sub esi,512 sub esi,512
add esi,576 add esi,576
@@ -2337,7 +2302,7 @@ void drawscreenwin(void)
mov ecx,160 mov ecx,160
rep stosd rep stosd
sub edi,640 sub edi,640
add edi,Temp1 add edi,pitch
add ebx,1 add ebx,1
cmp ebx,8 cmp ebx,8
jne Blank1 jne Blank1
@@ -2352,7 +2317,7 @@ void drawscreenwin(void)
mov ecx,16 mov ecx,16
rep stosd rep stosd
inc ebx inc ebx
add edi,Temp1 add edi,pitch
sub edi,640 sub edi,640
sub esi,512 sub esi,512
add esi,576 add esi,576
@@ -2368,7 +2333,7 @@ void drawscreenwin(void)
case 32: case 32:
for(j=0;j<8;j++) for(j=0;j<8;j++)
{ {
SURFDW=(DWORD *) &SurfBuf[j*Temp1]; SURFDW=(DWORD *) &SurfBuf[j*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<320;i++) for(i=0;i<320;i++)
@@ -2401,12 +2366,12 @@ void drawscreenwin(void)
} }
ScreenPtr=ScreenPtr+576-512; ScreenPtr=ScreenPtr+576-512;
SURFDW=(DWORD *) &SurfBuf[(j)*Temp1]; SURFDW=(DWORD *) &SurfBuf[(j)*pitch];
} }
for(j=((resolutn-1)+8);j<240;j++) for(j=((resolutn-1)+8);j<240;j++)
{ {
SURFDW=(DWORD *) &SurfBuf[j*Temp1]; SURFDW=(DWORD *) &SurfBuf[j*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<320;i++) for(i=0;i<320;i++)
@@ -2431,8 +2396,8 @@ void drawscreenwin(void)
switch (BitDepth) switch (BitDepth)
{ {
case 16: case 16:
AddEndBytes=Temp1-1024; AddEndBytes=pitch-1024;
NumBytesPerLine=Temp1; NumBytesPerLine=pitch;
WinVidMemStart=&SurfBuf[0]; WinVidMemStart=&SurfBuf[0];
_asm _asm
{ {
@@ -2456,8 +2421,8 @@ void drawscreenwin(void)
switch (BitDepth) switch (BitDepth)
{ {
case 16: case 16:
AddEndBytes=Temp1-1024; AddEndBytes=pitch-1024;
NumBytesPerLine=Temp1; NumBytesPerLine=pitch;
WinVidMemStart=&SurfBuf[16*640*2+64*2]; WinVidMemStart=&SurfBuf[16*640*2+64*2];
_asm _asm
{ {