Add HQ2X and HQ4X, also add HQxX support to SDL port

This commit is contained in:
pagefault
2003-12-05 20:26:37 +00:00
parent 0b40dabe35
commit 9aee713b31
18 changed files with 13101 additions and 212 deletions

View File

@@ -43,7 +43,9 @@ VIDEOBJ=${VIDEODIR}/makev16b.o ${VIDEODIR}/makev16t.o ${VIDEODIR}/makevid.o\
${VIDEODIR}/newgfx16.o ${VIDEODIR}/newgfx2.o ${VIDEODIR}/newgfx.o\ ${VIDEODIR}/newgfx16.o ${VIDEODIR}/newgfx2.o ${VIDEODIR}/newgfx.o\
${VIDEODIR}/m716text.o ${VIDEODIR}/2xsaiw.o\ ${VIDEODIR}/m716text.o ${VIDEODIR}/2xsaiw.o\
${VIDEODIR}/procvid.o ${VIDEODIR}/sw_draw.o\ ${VIDEODIR}/procvid.o ${VIDEODIR}/sw_draw.o\
${VIDEODIR}/hq3x16.o ${VIDEODIR}/hq3x32.o ${VIDEODIR}/hq2x16.o ${VIDEODIR}/hq2x32.o\
${VIDEODIR}/hq3x16.o ${VIDEODIR}/hq3x32.o\
${VIDEODIR}/hq4x16.o ${VIDEODIR}/hq4x32.o
WINOBJ=${WINDIR}/copyvwin.o \ WINOBJ=${WINDIR}/copyvwin.o \
${WINDIR}/sdlintrf.o ${WINDIR}/sdllink.o \ ${WINDIR}/sdlintrf.o ${WINDIR}/sdllink.o \
@@ -84,8 +86,12 @@ ${EFFECTSDIR}/smoke.o: ${EFFECTSDIR}/smoke.c
${EFFECTSDIR}/burn.o: ${EFFECTSDIR}/burn.c ${EFFECTSDIR}/burn.o: ${EFFECTSDIR}/burn.c
${VIDEODIR}/procvid.o: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xsaimmx.inc ${VIDEODIR}/procvid.o: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xsaimmx.inc
${VIDEODIR}/sw_draw.obj: ${VIDEODIR}/sw_draw.asm macros.mac ${VIDEODIR}/sw_draw.obj: ${VIDEODIR}/sw_draw.asm macros.mac
${VIDEODIR}/hq2x16.obj: ${VIDEODIR}/hq2x16.asm macros.mac
${VIDEODIR}/hq2x32.obj: ${VIDEODIR}/hq2x32.asm macros.mac
${VIDEODIR}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac ${VIDEODIR}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac
${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac ${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac
${VIDEODIR}/hq4x16.obj: ${VIDEODIR}/hq4x16.asm macros.mac
${VIDEODIR}/hq4x32.obj: ${VIDEODIR}/hq4x32.asm macros.mac
${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac ${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac
${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\ ${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac ${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
@@ -182,8 +188,8 @@ endmem.o: endmem.asm macros.mac
${DOSDIR}/modemrtn.o: ${DOSDIR}/modemrtn.asm macros.mac ${DOSDIR}/modemrtn.o: ${DOSDIR}/modemrtn.asm macros.mac
install: install:
@INSTALL@ -D -m 0755 @ZSNESEXE@ @prefix@/bin @INSTALL@ -m 0755 @ZSNESEXE@ @prefix@/bin
@INSTALL@ -D -m 0644 linux/zsnes.1 @prefix@/man/man1 @INSTALL@ -m 0644 linux/zsnes.1 @prefix@/man/man1
uninstall: uninstall:
rm -f @prefix@/bin/$(notdir @ZSNESEXE@) @prefix@/man/man5/zsnes.5 rm -f @prefix@/bin/$(notdir @ZSNESEXE@) @prefix@/man/man5/zsnes.5

View File

@@ -1064,7 +1064,9 @@ NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Super 2xSAI En
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; Hi-Resolution Mode 7 NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; Hi-Resolution Mode 7
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
NEWSYM GUIHQ2X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ2X Filter
NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ3X Filter NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ3X Filter
NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ4X Filter
SECTION .text SECTION .text
; **************************** ; ****************************

View File

@@ -158,7 +158,9 @@ EXTSYM TCPIPSendPacket,TCPIPSendPacketUDP
EXTSYM TCPIPDisconnect,TCPIPStatus EXTSYM TCPIPDisconnect,TCPIPStatus
EXTSYM TCPIPStoreByte EXTSYM TCPIPStoreByte
EXTSYM TCPIPGetByte,GUIBIFIL EXTSYM TCPIPGetByte,GUIBIFIL
EXTSYM GUIHQ2X
EXTSYM GUIHQ3X EXTSYM GUIHQ3X
EXTSYM GUIHQ4X
EXTSYM firstsaveinc EXTSYM firstsaveinc
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6 EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
%ifdef __LINUX__ %ifdef __LINUX__
@@ -601,7 +603,7 @@ NEWSYM KeyDisplayFPS, dd 0
NEWSYM KeyIncStateSlot, dd 0 NEWSYM KeyIncStateSlot, dd 0
NEWSYM KeyDecStateSlot, dd 0 NEWSYM KeyDecStateSlot, dd 0
NEWSYM KeyUsePlayer1234, dd 0 NEWSYM KeyUsePlayer1234, dd 0
NEWSYM hq3xFilter, db 0 NEWSYM hqFilter, db 0
NEWSYM reserved, db 0 NEWSYM reserved, db 0
NEWSYM scale2xFilter, db 0 NEWSYM scale2xFilter, db 0
@@ -1542,7 +1544,7 @@ NEWSYM StartGUI
jmp .no2xSaIdis jmp .no2xSaIdis
.2xSaIdis .2xSaIdis
mov byte[En2xSaI],0 mov byte[En2xSaI],0
mov byte[hq3xFilter],0 mov byte[hqFilter],0
.no2xSaIdis .no2xSaIdis
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
je .no2xsaidis je .no2xsaidis
@@ -1550,16 +1552,16 @@ NEWSYM StartGUI
.no2xsaidis .no2xsaidis
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
je .no2xsaien je .no2xsaien
mov byte[hq3xFilter],0 mov byte[hqFilter],0
mov byte[scanlines],0 mov byte[scanlines],0
mov byte[antienab],0 mov byte[antienab],0
.no2xsaien .no2xsaien
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
je .nohq3x je .nohq
mov byte[En2xSaI],0 mov byte[En2xSaI],0
mov byte[scanlines],0 mov byte[scanlines],0
mov byte[antienab],0 mov byte[antienab],0
.nohq3x .nohq
mov ecx,64 mov ecx,64
mov eax,SpecialLine mov eax,SpecialLine
.slloop .slloop

View File

@@ -1019,7 +1019,7 @@ GUIVideoKeys:
jne .nofullscanlines jne .nofullscanlines
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne .nofullscanlines jne .nofullscanlines
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
jne .nofullscanlines jne .nofullscanlines
call ClearScreen call ClearScreen
GUIkeystoggleoptn byte[scanlines],1 GUIkeystoggleoptn byte[scanlines],1
@@ -1045,7 +1045,7 @@ GUIVideoKeys:
jne .nohalfscanlines jne .nohalfscanlines
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne .nohalfscanlines jne .nohalfscanlines
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
jne .nohalfscanlines jne .nohalfscanlines
call ClearScreen call ClearScreen
GUIkeystoggleoptn byte[scanlines],3 GUIkeystoggleoptn byte[scanlines],3
@@ -1062,7 +1062,7 @@ GUIVideoKeys:
jne .noquarterscanlines jne .noquarterscanlines
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne .noquarterscanlines jne .noquarterscanlines
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
jne .noquarterscanlines jne .noquarterscanlines
call ClearScreen call ClearScreen
GUIkeystoggleoptn byte[scanlines],2 GUIkeystoggleoptn byte[scanlines],2
@@ -1076,19 +1076,25 @@ GUIVideoKeys:
%endif %endif
.noquarterscanlines .noquarterscanlines
cmp dh,'Q' cmp dh,'Q'
jne .nohq3xfilter jne .nohqfilter
xor ebx,ebx xor ebx,ebx
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUIHQ2X+ebx],0
jne .hqfilter
cmp byte[GUIHQ3X+ebx],0 cmp byte[GUIHQ3X+ebx],0
je .nohq3xfilter jne .hqfilter
xor byte[hq3xFilter],1 cmp byte[GUIHQ4X+ebx],0
jz .nohq3xfilter jne .hqfilter
jmp .nohqfilter
.hqfilter
xor byte[hqFilter],1
jz .nohqfilter
mov byte[scanlines],0 mov byte[scanlines],0
mov byte[cfgscanline],0 mov byte[cfgscanline],0
mov byte[En2xSaI],0 mov byte[En2xSaI],0
mov byte[antienab],0 mov byte[antienab],0
mov byte[cfginterp],0 mov byte[cfginterp],0
.nohq3xfilter .nohqfilter
cmp dh,'X' cmp dh,'X'
jne .no2xsai jne .no2xsai
xor ebx,ebx xor ebx,ebx

View File

@@ -2355,10 +2355,16 @@ DisplayGUIVideoClick:
%endif %endif
xor ebx,ebx xor ebx,ebx
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUIHQ2X+ebx],0
jne .checkboxhq
cmp byte[GUIHQ3X+ebx],0 cmp byte[GUIHQ3X+ebx],0
je .nocheckboxhq3x jne .checkboxhq
GUIClickCButtonHQ 115,163,byte[hq3xFilter] cmp byte[GUIHQ4X+ebx],0
.nocheckboxhq3x jne .checkboxhq
jmp .nocheckboxhq
.checkboxhq
GUIClickCButtonHQ 115,163,byte[hqFilter]
.nocheckboxhq
xor ebx,ebx xor ebx,ebx
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUI2xVID+ebx],0 cmp byte[GUI2xVID+ebx],0

View File

@@ -1643,7 +1643,7 @@ DisplayGUIVideo:
jmp .no2xSaIdis jmp .no2xSaIdis
.2xSaIdis .2xSaIdis
mov byte[En2xSaI],0 mov byte[En2xSaI],0
mov byte[hq3xFilter],0 mov byte[hqFilter],0
.no2xSaIdis .no2xSaIdis
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
je .no2xsaidis je .no2xsaidis
@@ -1651,11 +1651,11 @@ DisplayGUIVideo:
.no2xsaidis .no2xsaidis
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
je .no2xsaien je .no2xsaien
mov byte[hq3xFilter],0 mov byte[hqFilter],0
mov byte[scanlines],0 mov byte[scanlines],0
mov byte[antienab],0 mov byte[antienab],0
.no2xsaien .no2xsaien
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
je .nohq3xen je .nohq3xen
mov byte[En2xSaI],0 mov byte[En2xSaI],0
mov byte[scanlines],0 mov byte[scanlines],0
@@ -1772,12 +1772,24 @@ DisplayGUIVideo:
je near .notext11a je near .notext11a
GUIOuttextwin2u 5,130,158,GUIVideoTextscale2x,1 GUIOuttextwin2u 5,130,158,GUIVideoTextscale2x,1
.notext11a .notext11a
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ2X+eax],0
je near .notexthq2xa
GUIOuttextwin2u 5,130,168,GUIVideoTexthq2x,1
.notexthq2xa
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIHQ3X+eax],0 cmp byte[GUIHQ3X+eax],0
je near .notext11 je near .notexthq3xa
GUIOuttextwin2u 5,130,168,GUIVideoTexthq3x,1 GUIOuttextwin2u 5,130,168,GUIVideoTexthq3x,1
.notext11 .notexthq3xa
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ4X+eax],0
je near .notexthq4xa
GUIOuttextwin2u 5,130,168,GUIVideoTexthq4x,1
.notexthq4xa
GUIOuttextwin2u 5,26,188,GUIVideoText8c,0 GUIOuttextwin2u 5,26,188,GUIVideoText8c,0
%ifndef __LINUX__ %ifndef __LINUX__
GUIOuttextwin2u 5,130,188,GUIVideoText9,0 GUIOuttextwin2u 5,130,188,GUIVideoText9,0
@@ -1885,12 +1897,24 @@ DisplayGUIVideo:
je near .notext11b je near .notext11b
GUIOuttextwin2 5,129,157,GUIVideoTextscale2x GUIOuttextwin2 5,129,157,GUIVideoTextscale2x
.notext11b .notext11b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ2X+eax],0
je near .notexthq2xb
GUIOuttextwin2 5,129,167,GUIVideoTexthq2x
.notexthq2xb
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIHQ3X+eax],0 cmp byte[GUIHQ3X+eax],0
je near .notext11c je near .notexthq3xb
GUIOuttextwin2 5,129,167,GUIVideoTexthq3x GUIOuttextwin2 5,129,167,GUIVideoTexthq3x
.notext11c .notexthq3xb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ4X+eax],0
je near .notexthq4xb
GUIOuttextwin2 5,129,167,GUIVideoTexthq4x
.notexthq4xb
GUIOuttextwin2 5,25,187,GUIVideoText8c GUIOuttextwin2 5,25,187,GUIVideoText8c
%ifndef __LINUX__ %ifndef __LINUX__
GUIOuttextwin2 5,129,187,GUIVideoText9 GUIOuttextwin2 5,129,187,GUIVideoText9
@@ -2076,15 +2100,21 @@ DisplayGUIVideo:
.nocheckbox2scale2x .nocheckbox2scale2x
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUIHQ2X+eax],0
jne near .checkboxhq
cmp byte[GUIHQ3X+eax],0 cmp byte[GUIHQ3X+eax],0
je near .nocheckbox2hq3x jne near .checkboxhq
cmp byte[GUIHQ4X+eax],0
jne near .checkboxhq
jmp .nocheckboxhq
.checkboxhq
mov dword[GUITemp],GUIIconDataCheckBoxUC mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
je .nocheckbox1hq3x je .uncheckedhq
mov dword[GUITemp],GUIIconDataCheckBoxC mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1hq3x .uncheckedhq
GUIDisplayIconWin 5,115,163,[GUITemp] GUIDisplayIconWin 5,115,163,[GUITemp]
.nocheckbox2hq3x .nocheckboxhq
DrawGUIWinBox 5,5,26,115,69,167 DrawGUIWinBox 5,5,26,115,69,167
DrawSlideBarWin 5,117,34,[GUIcurrentvideoviewloc],[NumVideoModes],5,28,GUIVStA DrawSlideBarWin 5,117,34,[GUIcurrentvideoviewloc],[NumVideoModes],5,28,GUIVStA
cmp byte[GUICHold],5 cmp byte[GUICHold],5
@@ -2205,7 +2235,9 @@ GUIVideoTextbf db 'BILINEAR FILTER',0
GUIVideoText3 db 'INTERPOLATION',0 ; -y GUIVideoText3 db 'INTERPOLATION',0 ; -y
GUIVideoText4 db 'EAGLE ENGINE',0 ; -y GUIVideoText4 db 'EAGLE ENGINE',0 ; -y
GUIVideoTextscale2x db 'SCALE2X',0 GUIVideoTextscale2x db 'SCALE2X',0
GUIVideoTexthq2x db 'HQ2X',0
GUIVideoTexthq3x db 'HQ3X',0 GUIVideoTexthq3x db 'HQ3X',0
GUIVideoTexthq4x db 'HQ4X',0
GUIVideoText5 db 'FULL SCREEN',0 ; -c GUIVideoText5 db 'FULL SCREEN',0 ; -c
GUIVideoText5b db 'WIDE SCREEN',0 ; -c GUIVideoText5b db 'WIDE SCREEN',0 ; -c
GUIVideoText6 db 'SMALL SCREEN',0 ; -c GUIVideoText6 db 'SMALL SCREEN',0 ; -c
@@ -3764,8 +3796,8 @@ DisplayNetOptns:
mov dword[GUINetDisp],'INTE' mov dword[GUINetDisp],'INTE'
mov dword[GUINetDisp+4],'RNET' mov dword[GUINetDisp+4],'RNET'
mov byte[GUINetDisp+8],0 mov byte[GUINetDisp+8],0
; cmp byte[NetPlayNoMore],1 cmp byte[NetPlayNoMore],1
; jne .notcpip jne .notcpip
mov dword[GUIwinsizex+8*4],201 mov dword[GUIwinsizex+8*4],201
mov dword[GUIwinsizey+8*4],48 mov dword[GUIwinsizey+8*4],48
.notcpip .notcpip
@@ -3943,8 +3975,8 @@ DisplayNetOptnsTCPIP:
.zero .zero
sub byte[GUItextcolor],15 sub byte[GUItextcolor],15
; cmp byte[NetPlayNoMore],1 cmp byte[NetPlayNoMore],1
; jne near .tcpip jne near .tcpip
GUIOuttextwin2 8,6,16,GUINetTextr1 GUIOuttextwin2 8,6,16,GUINetTextr1
GUIOuttextwin2 8,6,36,GUINetTextr2 GUIOuttextwin2 8,6,36,GUINetTextr2
GUIOuttextwin2 8,6,46,GUINetTextr3 GUIOuttextwin2 8,6,46,GUINetTextr3
@@ -4541,12 +4573,9 @@ GUINetTextm2 db 0,0,0
GUINetTextn2 db '_',0 GUINetTextn2 db '_',0
GUINetTexto2 db 'BACK BUFFER',0 GUINetTexto2 db 'BACK BUFFER',0
GUINetTextp2 db 'ALLOW UDP CONNECTION',0 GUINetTextp2 db 'ALLOW UDP CONNECTION',0
GUINetTextr1 db 'NETPLAY IS DISABLED IN',0 GUINetTextr1 db 'PLEASE RESTART ZSNESW',0
GUINetTextr2 db 'WIP VERSIONS UNTIL',0 GUINetTextr2 db 'BEFORE STARTING A NEW',0
GUINetTextr3 db 'FURTHER NOTICE',0 GUINetTextr3 db 'NETPLAY SESSION',0
;GUINetTextr1 db 'PLEASE RESTART ZSNESW',0
;GUINetTextr2 db 'BEFORE STARTING A NEW',0
;GUINetTextr3 db 'NETPLAY SESSION',0
%ifdef __MSDOS__ %ifdef __MSDOS__
BaudVal dd 9600,14400,19200,28800,38400,57600,115200 BaudVal dd 9600,14400,19200,28800,38400,57600,115200

View File

@@ -1,3 +1,3 @@
/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 init.obj initc.obj uic.obj patch.obj ui.obj vcache.obj effects\water.obj effects\smoke.obj effects\burn.obj version.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 video/hq3x16.obj video/hq3x32.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\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 init.obj initc.obj uic.obj patch.obj ui.obj vcache.obj effects\water.obj effects\smoke.obj effects\burn.obj version.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 video\hq2x16.obj video\hq2x32.obj video\hq3x16.obj video\hq3x32.obj video\hq4x16.obj video\hq4x32.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\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

@@ -934,8 +934,9 @@ NEWSYM GUIRATIO, db 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
NEWSYM GUIBIFIL, db 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; binlinear = 1, nearest = 0 NEWSYM GUIBIFIL, db 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; binlinear = 1, nearest = 0
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
NEWSYM GUIMBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 NEWSYM GUIMBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
NEWSYM GUIHQ2X, db 0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq2x filter
NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter
NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1 ; hq4x filter
SECTION .text SECTION .text

View File

@@ -66,12 +66,14 @@ extern void SwitchFullScreen (void);
extern unsigned char cvidmode; extern unsigned char cvidmode;
DWORD SMode=0; DWORD SMode=0;
DWORD DSMode=0; DWORD DSMode=0;
DWORD prevHQ3XMode=-1; DWORD prevHQMode=-1;
extern BYTE GUIWFVID[]; extern BYTE GUIWFVID[];
extern BYTE GUISMODE[]; extern BYTE GUISMODE[];
extern BYTE GUIDSMODE[]; extern BYTE GUIDSMODE[];
extern BYTE GUIHQ2X[];
extern BYTE GUIHQ3X[]; extern BYTE GUIHQ3X[];
extern BYTE GUIHQ4X[];
/* JOYSTICK AND KEYBOARD INPUT */ /* JOYSTICK AND KEYBOARD INPUT */
SDL_Joystick *JoystickInput[5]; SDL_Joystick *JoystickInput[5];

View File

@@ -51,7 +51,9 @@ VIDEOBJ=${VIDEODIR}/makev16b.obj ${VIDEODIR}/makev16t.obj ${VIDEODIR}/makevid.ob
${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}/sw_draw.obj\ ${VIDEODIR}/procvid.obj ${VIDEODIR}/sw_draw.obj\
${VIDEODIR}/hq3x16.obj ${VIDEODIR}/hq3x32.obj ${VIDEODIR}/hq2x16.obj ${VIDEODIR}/hq2x32.obj\
${VIDEODIR}/hq3x16.obj ${VIDEODIR}/hq3x32.obj\
${VIDEODIR}/hq4x16.obj ${VIDEODIR}/hq4x32.obj
WINOBJ=${WINDIR}/copyvwin.obj \ WINOBJ=${WINDIR}/copyvwin.obj \
${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj ${WINDIR}/zloaderw.obj\ ${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj ${WINDIR}/zloaderw.obj\
@@ -119,8 +121,12 @@ ${EFFECTSDIR}/burn.obj: ${EFFECTSDIR}/burn.c
${VIDEODIR}/2xsaiw.obj: ${VIDEODIR}/2xsaiw.asm macros.mac ${VIDEODIR}/2xsaiw.obj: ${VIDEODIR}/2xsaiw.asm macros.mac
${VIDEODIR}/procvid.obj: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xSaImmx.inc ${VIDEODIR}/procvid.obj: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xSaImmx.inc
${VIDEODIR}/sw_draw.obj: ${VIDEODIR}/sw_draw.asm macros.mac ${VIDEODIR}/sw_draw.obj: ${VIDEODIR}/sw_draw.asm macros.mac
${VIDEODIR}/hq2x16.obj: ${VIDEODIR}/hq2x16.asm macros.mac
${VIDEODIR}/hq2x32.obj: ${VIDEODIR}/hq2x32.asm macros.mac
${VIDEODIR}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac ${VIDEODIR}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac
${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac ${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac
${VIDEODIR}/hq4x16.obj: ${VIDEODIR}/hq4x16.asm macros.mac
${VIDEODIR}/hq4x32.obj: ${VIDEODIR}/hq4x32.asm macros.mac
${CHIPDIR}/sa1regs.obj: ${CHIPDIR}/sa1regs.asm macros.mac\ ${CHIPDIR}/sa1regs.obj: ${CHIPDIR}/sa1regs.asm macros.mac\
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac ${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
${CHIPDIR}/sfxproc.obj: ${CHIPDIR}/sfxproc.asm macros.mac\ ${CHIPDIR}/sfxproc.obj: ${CHIPDIR}/sfxproc.asm macros.mac\

2172
zsnes/src/video/hq2x16.asm Normal file

File diff suppressed because it is too large Load Diff

2145
zsnes/src/video/hq2x32.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -26,38 +26,20 @@ EXTSYM vidbuffer,curblank,MMXSupport,GUIOn,GUIOn2,
EXTSYM vidbufferofsb EXTSYM vidbufferofsb
EXTSYM FilteredGUI,resolutn,lineleft,cfield EXTSYM FilteredGUI,resolutn,lineleft,cfield
EXTSYM hirestiledat,newengen,SpecialLine,HalfTrans EXTSYM hirestiledat,newengen,SpecialLine,HalfTrans
EXTSYM hq3xFilter EXTSYM hqFilter
EXTSYM AddEndBytes EXTSYM AddEndBytes
EXTSYM NumBytesPerLine EXTSYM NumBytesPerLine
EXTSYM WinVidMemStart EXTSYM WinVidMemStart
EXTSYM BitConv32Ptr EXTSYM BitConv32Ptr
EXTSYM RGBtoYUVPtr EXTSYM RGBtoYUVPtr
EXTSYM prevline, nextline, deltaptr, xcounter
EXTSYM w1, w2, w3, w4, w5, w6, w7, w8, w9
EXTSYM reg_blank, const7, cross, threshold
%ifdef __MINGW__ %ifdef __MINGW__
NEWSYM CopyVWinAsmStart NEWSYM CopyVWinAsmStart
%endif %endif
SECTION .bss
NEWSYM prevline, resd 1
NEWSYM nextline, resd 1
NEWSYM deltaptr, resd 1
NEWSYM xcounter, resd 1
NEWSYM w1, resd 1
NEWSYM w2, resd 1
NEWSYM w3, resd 1
NEWSYM w4, resd 1
NEWSYM w5, resd 1
NEWSYM w6, resd 1
NEWSYM w7, resd 1
NEWSYM w8, resd 1
NEWSYM w9, resd 1
NEWSYM cross, resd 1
SECTION .data
NEWSYM reg_blank, dd 0,0
NEWSYM const7, dd 0x00070007,0x00000007
NEWSYM threshold, dd 0x00300706,0x00000000
SECTION .text SECTION .text
%macro TestDiff 2 %macro TestDiff 2
@@ -409,12 +391,12 @@ SECTION .text
mov [edi+ebx*2+4],ax mov [edi+ebx*2+4],ax
%endmacro %endmacro
NEWSYM copy768x720x16bwin NEWSYM hq3x_16b
cmp byte[curblank],40h cmp byte[curblank],40h
jne .startcopy jne .startcopy
ret ret
.startcopy .startcopy
push es pushad
mov ax,ds mov ax,ds
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
@@ -429,7 +411,7 @@ NEWSYM copy768x720x16bwin
.filtergui .filtergui
cmp byte[MMXSupport],0 cmp byte[MMXSupport],0
je nointerp je nointerp
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
jne hq3x jne hq3x
;----------------------------; ;----------------------------;
@@ -458,7 +440,7 @@ nointerp:
add esi,64 add esi,64
dec dl dec dl
jnz near .loopy jnz near .loopy
pop es popad
ret ret
;----------------------------; ;----------------------------;
@@ -2607,7 +2589,7 @@ hq3x:
jmp .loopy jmp .loopy
.fin .fin
emms emms
pop es popad
ret ret
HighResProc: HighResProc:

View File

@@ -26,7 +26,7 @@ EXTSYM vidbuffer,curblank,MMXSupport,GUIOn,GUIOn2,
EXTSYM vidbufferofsb EXTSYM vidbufferofsb
EXTSYM FilteredGUI,resolutn,lineleft,cfield EXTSYM FilteredGUI,resolutn,lineleft,cfield
EXTSYM hirestiledat,newengen,SpecialLine EXTSYM hirestiledat,newengen,SpecialLine
EXTSYM hq3xFilter EXTSYM hqFilter
EXTSYM AddEndBytes EXTSYM AddEndBytes
EXTSYM NumBytesPerLine EXTSYM NumBytesPerLine
EXTSYM WinVidMemStart EXTSYM WinVidMemStart
@@ -34,23 +34,13 @@ EXTSYM BitConv32Ptr
EXTSYM RGBtoYUVPtr EXTSYM RGBtoYUVPtr
EXTSYM prevline, nextline, deltaptr, xcounter EXTSYM prevline, nextline, deltaptr, xcounter
EXTSYM w1, w2, w3, w4, w5, w6, w7, w8, w9 EXTSYM w1, w2, w3, w4, w5, w6, w7, w8, w9
EXTSYM c1, c2, c3, c4, c5, c6, c7, c8, c9
EXTSYM reg_blank, const7, cross, threshold EXTSYM reg_blank, const7, cross, threshold
%ifdef __MINGW__ %ifdef __MINGW__
NEWSYM CopyVWinAsmStart NEWSYM CopyVWinAsmStart
%endif %endif
SECTION .bss
NEWSYM c1, resd 1
NEWSYM c2, resd 1
NEWSYM c3, resd 1
NEWSYM c4, resd 1
NEWSYM c5, resd 1
NEWSYM c6, resd 1
NEWSYM c7, resd 1
NEWSYM c8, resd 1
NEWSYM c9, resd 1
SECTION .text SECTION .text
%macro TestDiff 2 %macro TestDiff 2
@@ -360,12 +350,12 @@ SECTION .text
mov [edi+ebx*2+8],eax mov [edi+ebx*2+8],eax
%endmacro %endmacro
NEWSYM copy768x720x32bwin NEWSYM hq3x_32b
cmp byte[curblank],40h cmp byte[curblank],40h
jne .startcopy jne .startcopy
ret ret
.startcopy .startcopy
push es pushad
mov ax,ds mov ax,ds
mov es,ax mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
@@ -380,7 +370,7 @@ NEWSYM copy768x720x32bwin
.filtergui .filtergui
cmp byte[MMXSupport],0 cmp byte[MMXSupport],0
je nointerp je nointerp
cmp byte[hq3xFilter],0 cmp byte[hqFilter],0
jne hq3x jne hq3x
;----------------------------; ;----------------------------;
@@ -413,7 +403,7 @@ nointerp:
add esi,64 add esi,64
dec byte[lineleft] dec byte[lineleft]
jnz near .loopy jnz near .loopy
pop es popad
ret ret
;----------------------------; ;----------------------------;
@@ -2639,7 +2629,7 @@ hq3x:
jmp .loopy jmp .loopy
.fin .fin
emms emms
pop es popad
ret ret
HighResProc: HighResProc:

4288
zsnes/src/video/hq4x16.asm Normal file

File diff suppressed because it is too large Load Diff

4212
zsnes/src/video/hq4x32.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1272,7 +1272,9 @@ NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1 ; Triple Buffering (Win) NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1 ; Triple Buffering (Win)
NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0 NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0
NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1 NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1
NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter NEWSYM GUIHQ2X, db 0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq2x filter
NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter
NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1 ; hq4x filter
SECTION .text SECTION .text

View File

@@ -1286,17 +1286,19 @@ extern "C" DWORD converta;
extern "C" unsigned int BitConv32Ptr; extern "C" unsigned int BitConv32Ptr;
extern "C" unsigned int RGBtoYUVPtr; extern "C" unsigned int RGBtoYUVPtr;
extern "C" unsigned char cvidmode; extern "C" unsigned char cvidmode;
extern "C" unsigned char hq3xFilter; extern "C" unsigned char hqFilter;
DWORD FirstVid=1; DWORD FirstVid=1;
DWORD FirstFull=1; DWORD FirstFull=1;
DWORD SMode=0; DWORD SMode=0;
DWORD DSMode=0; DWORD DSMode=0;
DWORD prevHQ3XMode=-1; DWORD prevHQMode=-1;
WORD Refresh = 0; WORD Refresh = 0;
extern "C" BYTE GUIWFVID[]; extern "C" BYTE GUIWFVID[];
extern "C" BYTE GUISMODE[]; extern "C" BYTE GUISMODE[];
extern "C" BYTE GUIDSMODE[]; extern "C" BYTE GUIDSMODE[];
extern "C" BYTE GUIHQ2X[];
extern "C" BYTE GUIHQ3X[]; extern "C" BYTE GUIHQ3X[];
extern "C" BYTE GUIHQ4X[];
int InitDirectDraw() int InitDirectDraw()
{ {
@@ -1345,9 +1347,18 @@ int InitDirectDraw()
FullScreen=GUIWFVID[cvidmode]; FullScreen=GUIWFVID[cvidmode];
DSMode=GUIDSMODE[cvidmode]; DSMode=GUIDSMODE[cvidmode];
DWORD HQMode=0;
if ( hqFilter != 0 )
{
if ( GUIHQ2X[cvidmode] != 0 ) HQMode=2;
if ( GUIHQ3X[cvidmode] != 0 ) HQMode=3;
if ( GUIHQ4X[cvidmode] != 0 ) HQMode=4;
}
if (FullScreen == 1 && DSMode == 0) if (FullScreen == 1 && DSMode == 0)
{ {
if (SurfaceX == 768 && SurfaceY == 720) if ( HQMode != 0 )
{ {
int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2; int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2;
int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2; int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2;
@@ -1512,7 +1523,7 @@ int InitDirectDraw()
return FALSE; return FALSE;
} }
if ((SurfaceX==512) || (SurfaceX==640)) if (((SurfaceX==512) || (SurfaceX==640)) && (HQMode==0))
AltSurface = 1; AltSurface = 1;
} }
@@ -1711,15 +1722,19 @@ void initwinvideo(void)
//MK: unused 2003/08/31 //MK: unused 2003/08/31
//RECT swrect; //RECT swrect;
DWORD newmode=0; DWORD newmode=0;
DWORD HQ3XMode=0; DWORD HQMode=0;
if ((GUIHQ3X[cvidmode]!=0) && (hq3xFilter!=0)) if ( hqFilter != 0 )
HQ3XMode=1; {
if ( GUIHQ2X[cvidmode] != 0 ) HQMode=2;
if ( GUIHQ3X[cvidmode] != 0 ) HQMode=3;
if ( GUIHQ4X[cvidmode] != 0 ) HQMode=4;
}
if ((CurMode!=cvidmode) || (prevHQ3XMode!=HQ3XMode)) if ((CurMode!=cvidmode) || (prevHQMode!=HQMode))
{ {
CurMode=cvidmode; CurMode=cvidmode;
prevHQ3XMode=HQ3XMode; prevHQMode=HQMode;
newmode=1; newmode=1;
SurfaceX=256; SurfaceX=256;
SurfaceY=240; SurfaceY=240;
@@ -1907,10 +1922,20 @@ void initwinvideo(void)
break; break;
} }
if (HQ3XMode!=0) switch ( HQMode )
{ {
case 2:
SurfaceX=512;
SurfaceY=480;
break;
case 3:
SurfaceX=768; SurfaceX=768;
SurfaceY=720; SurfaceY=720;
break;
case 4:
SurfaceX=1024;
SurfaceY=960;
break;
} }
BlitArea.top = 0; BlitArea.top = 0;
@@ -1935,7 +1960,8 @@ void initwinvideo(void)
BlitArea.bottom = SurfaceY; BlitArea.bottom = SurfaceY;
} }
if (SurfaceX == 768) BlitArea.bottom = (SurfaceY/240)*resolutn; if ( HQMode != 0 )
BlitArea.bottom = (SurfaceY/240)*resolutn;
if (PrevRes == 0) PrevRes = resolutn; if (PrevRes == 0) PrevRes = resolutn;
} }
@@ -1970,7 +1996,7 @@ void initwinvideo(void)
if (FullScreen == 1 && DSMode == 0) if (FullScreen == 1 && DSMode == 0)
{ {
if (SurfaceX == 768 && SurfaceY == 720) if ( HQMode != 0 )
{ {
int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2; int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2;
int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2; int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2;
@@ -2250,8 +2276,12 @@ extern DWORD AddEndBytes;
extern DWORD NumBytesPerLine; extern DWORD NumBytesPerLine;
extern unsigned char * WinVidMemStart; extern unsigned char * WinVidMemStart;
extern void copy640x480x16bwin(void); extern void copy640x480x16bwin(void);
extern void copy768x720x16bwin(void); extern void hq2x_16b(void);
extern void copy768x720x32bwin(void); extern void hq2x_32b(void);
extern void hq3x_16b(void);
extern void hq3x_32b(void);
extern void hq4x_16b(void);
extern void hq4x_32b(void);
extern unsigned char NGNoTransp; extern unsigned char NGNoTransp;
extern unsigned char newengen; extern unsigned char newengen;
extern void ClearWin16(); extern void ClearWin16();
@@ -2338,7 +2368,7 @@ extern _int64 copymaskG = 0x0000FC000000FC00;
extern _int64 copymagic = 0x0008010000080100; extern _int64 copymagic = 0x0008010000080100;
extern _int64 coef = 0x0066009a0066009a; extern _int64 coef = 0x0066009a0066009a;
extern BYTE MotionBlur; //extern BYTE MotionBlur;
extern WORD totlines; extern WORD totlines;
void drawscreenwin(void) void drawscreenwin(void)
@@ -2367,7 +2397,7 @@ void drawscreenwin(void)
{ {
BlitArea.bottom = (SurfaceY/240)*224; BlitArea.bottom = (SurfaceY/240)*224;
if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY; if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY;
if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/239)*224; if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768 || SurfaceX == 1024) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/239)*224;
initwinvideo(); initwinvideo();
PrevRes = resolutn; PrevRes = resolutn;
} }
@@ -2376,22 +2406,24 @@ void drawscreenwin(void)
{ {
BlitArea.bottom = (SurfaceY/240)*239; BlitArea.bottom = (SurfaceY/240)*239;
if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY; if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY;
if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/224)*239; if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768 || SurfaceX == 1024) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/224)*239;
initwinvideo(); initwinvideo();
PrevRes = resolutn; PrevRes = resolutn;
} }
DWORD HQ3XMode=0; DWORD HQMode=0;
if (MMXSupport == 0) if (MMXSupport == 0)
hq3xFilter=0; hqFilter=0;
else
if ( hqFilter != 0 )
{ {
if ((GUIHQ3X[cvidmode]!=0) && (hq3xFilter!=0)) if ( GUIHQ2X[cvidmode] != 0 ) HQMode=2;
HQ3XMode=1; if ( GUIHQ3X[cvidmode] != 0 ) HQMode=3;
if ( GUIHQ4X[cvidmode] != 0 ) HQMode=4;
} }
if (prevHQ3XMode!=HQ3XMode) if (prevHQMode!=HQMode)
initwinvideo(); initwinvideo();
SurfBufD=(DWORD) &SurfBuf[0]; SurfBufD=(DWORD) &SurfBuf[0];
@@ -2415,6 +2447,8 @@ void drawscreenwin(void)
InitDirectDraw(); InitDirectDraw();
} }
if ( HQMode == 0 )
{
if (SurfaceX == 256 && SurfaceY == 240) if (SurfaceX == 256 && SurfaceY == 240)
{ {
switch (BitDepth) switch (BitDepth)
@@ -2585,33 +2619,37 @@ void drawscreenwin(void)
drawscreenwin(); drawscreenwin();
} }
} }
if (SurfaceX == 768 && SurfaceY == 720) }
else
{ {
// HQMode != 0
NumBytesPerLine = pitch;
AddEndBytes = pitch - SurfaceX*(BitDepth/8);
WinVidMemStart=&SurfBuf[0];
switch (BitDepth) switch (BitDepth)
{ {
case 16: case 16:
AddEndBytes=pitch-768*2;
NumBytesPerLine=pitch;
WinVidMemStart=&SurfBuf[0];
_asm
{ {
pushad switch (HQMode)
call copy768x720x16bwin {
popad case 2: hq2x_16b(); break;
case 3: hq3x_16b(); break;
case 4: hq4x_16b(); break;
} }
break; break;
}
case 32: case 32:
AddEndBytes=pitch-768*4;
NumBytesPerLine=pitch;
WinVidMemStart=&SurfBuf[0];
_asm
{ {
pushad switch (HQMode)
call copy768x720x32bwin {
popad case 2: hq2x_32b(); break;
case 3: hq3x_32b(); break;
case 4: hq4x_32b(); break;
} }
break; break;
}
default: default:
{
UnlockSurface(); UnlockSurface();
MessageBox (NULL, "Mode only available in 16 and 32 bit color", "DDRAW Error" , MB_ICONERROR ); MessageBox (NULL, "Mode only available in 16 and 32 bit color", "DDRAW Error" , MB_ICONERROR );
cvidmode=2; cvidmode=2;
@@ -2620,7 +2658,7 @@ void drawscreenwin(void)
drawscreenwin(); drawscreenwin();
} }
} }
}
UnlockSurface(); UnlockSurface();
DrawScreen(); DrawScreen();
} }