Added MaxSt's HQ3X filter
This commit is contained in:
@@ -26,7 +26,7 @@ ZIPDIR=zip
|
||||
|
||||
CHIPSOBJ=${CHIPDIR}/sfxproc.o ${CHIPDIR}/fxemu2.o ${CHIPDIR}/dsp1proc.o\
|
||||
${CHIPDIR}/fxemu2b.o ${CHIPDIR}/fxemu2c.o ${CHIPDIR}/fxtable.o\
|
||||
${CHIPDIR}/sa1proc.o ${CHIPDIR}/sa1regs.o ${CHIPDIR}/dsp1emu.o
|
||||
${CHIPDIR}/sa1proc.o ${CHIPDIR}/sa1regs.o $CHIPDIR}/dsp1emu.o
|
||||
|
||||
CPUOBJ=${CPUDIR}/addrni.o ${CPUDIR}/dma.o ${CPUDIR}/dsp.o ${CPUDIR}/dspproc.o\
|
||||
${CPUDIR}/execute.o ${CPUDIR}/irq.o ${CPUDIR}/memory.o \
|
||||
@@ -41,9 +41,11 @@ VIDEOBJ=${VIDEODIR}/makev16b.o ${VIDEODIR}/makev16t.o ${VIDEODIR}/makevid.o\
|
||||
${VIDEODIR}/mode7ext.o ${VIDEODIR}/mv16tms.o ${VIDEODIR}/newg162.o\
|
||||
${VIDEODIR}/newgfx16.o ${VIDEODIR}/newgfx2.o ${VIDEODIR}/newgfx.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
|
||||
|
||||
WINOBJ=${WINDIR}/copyvwin.o ${WINDIR}/sdlintrf.o ${WINDIR}/sdllink.o \
|
||||
WINOBJ=${WINDIR}/copyvwin.o \
|
||||
${WINDIR}/sdlintrf.o ${WINDIR}/sdllink.o \
|
||||
@GL_DRAW@ ${WINDIR}/sw_draw.o \
|
||||
${WINDIR}/zloaderw.o ${WINDIR}/ztcp.o ${WINDIR}/zipxw.o \
|
||||
${WINDIR}/zfilew.o ${WINDIR}/protect.o
|
||||
@@ -80,6 +82,9 @@ water.o: water.c
|
||||
smoke.o: smoke.c
|
||||
burn.o: burn.c
|
||||
${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}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac
|
||||
${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac
|
||||
${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac
|
||||
${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\
|
||||
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
|
||||
|
||||
@@ -70,7 +70,7 @@ EXTSYM soundon, StereoSound, SoundCompD, SoundQuality, MusicRelVol
|
||||
EXTSYM endprog, continueprog, spcBuffera, spcRamcmp, cbitmode, makepal
|
||||
EXTSYM t1cc, LoadDir, SRAMDir, LoadDrive,SRAMDrive, initsnes, romloadskip
|
||||
EXTSYM fname, makeextension, sram, clearmem2, loadfileGUI, GUIloadfailed
|
||||
EXTSYM SetupROM, CheckROMType, romdata, ForcePal, ramsize, ramsizeand, curromsize
|
||||
EXTSYM SetupROM,CheckROMType, romdata, ForcePal, ramsize, ramsizeand, curromsize
|
||||
EXTSYM romispal, totlines, cfgloadsdir, init65816, procexecloop
|
||||
EXTSYM spcRam, spcPCRam, spcS, spcRamDP, spcA, spcX, spcY, spcP, spcNZ
|
||||
EXTSYM Voice0Status, Voice1Status, Voice2Status, Voice3Status, Voice4Status
|
||||
@@ -158,6 +158,7 @@ EXTSYM TCPIPSendPacket,TCPIPSendPacketUDP
|
||||
EXTSYM TCPIPDisconnect,TCPIPStatus
|
||||
EXTSYM TCPIPStoreByte
|
||||
EXTSYM TCPIPGetByte,GUIBIFIL
|
||||
EXTSYM GUIHQ3X
|
||||
EXTSYM firstsaveinc
|
||||
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
|
||||
%ifdef __LINUX__
|
||||
@@ -585,7 +586,7 @@ NEWSYM SmallMsgText, db 0
|
||||
NEWSYM AllowMultipleInst, db 0
|
||||
NEWSYM FilteredGUI, db 0
|
||||
NEWSYM BilinearFilter, db 0
|
||||
NEWSYM TripleBufferWin, db 0
|
||||
NEWSYM hq3xFilter, db 0
|
||||
|
||||
NEWSYM ExclusiveSound, db 0
|
||||
NEWSYM DisableScreenSaver, db 0
|
||||
@@ -1540,6 +1541,7 @@ NEWSYM StartGUI
|
||||
jmp .no2xSaIdis
|
||||
.2xSaIdis
|
||||
mov byte[En2xSaI],0
|
||||
mov byte[hq3xFilter],0
|
||||
.no2xSaIdis
|
||||
cmp byte[En2xSaI],0
|
||||
je .no2xsaidis
|
||||
@@ -1547,9 +1549,16 @@ NEWSYM StartGUI
|
||||
.no2xsaidis
|
||||
cmp byte[En2xSaI],0
|
||||
je .no2xsaien
|
||||
mov byte[hq3xFilter],0
|
||||
mov byte[scanlines],0
|
||||
mov byte[antienab],0
|
||||
.no2xsaien
|
||||
cmp byte[hq3xFilter],0
|
||||
je .nohq3x
|
||||
mov byte[En2xSaI],0
|
||||
mov byte[scanlines],0
|
||||
mov byte[antienab],0
|
||||
.nohq3x
|
||||
|
||||
;.dosport
|
||||
mov ecx,64
|
||||
|
||||
@@ -1019,6 +1019,8 @@ GUIVideoKeys:
|
||||
jne .nofullscanlines
|
||||
cmp byte[En2xSaI],0
|
||||
jne .nofullscanlines
|
||||
cmp byte[hq3xFilter],0
|
||||
jne .nofullscanlines
|
||||
call ClearScreen
|
||||
GUIkeystoggleoptn byte[scanlines],1
|
||||
%ifdef __MSDOS__
|
||||
@@ -1043,6 +1045,8 @@ GUIVideoKeys:
|
||||
jne .nohalfscanlines
|
||||
cmp byte[En2xSaI],0
|
||||
jne .nohalfscanlines
|
||||
cmp byte[hq3xFilter],0
|
||||
jne .nohalfscanlines
|
||||
call ClearScreen
|
||||
GUIkeystoggleoptn byte[scanlines],3
|
||||
%ifdef __MSDOS__
|
||||
@@ -1058,6 +1062,8 @@ GUIVideoKeys:
|
||||
jne .noquarterscanlines
|
||||
cmp byte[En2xSaI],0
|
||||
jne .noquarterscanlines
|
||||
cmp byte[hq3xFilter],0
|
||||
jne .noquarterscanlines
|
||||
call ClearScreen
|
||||
GUIkeystoggleoptn byte[scanlines],2
|
||||
%ifdef __MSDOS__
|
||||
@@ -1069,6 +1075,20 @@ GUIVideoKeys:
|
||||
;call GUISetPal
|
||||
%endif
|
||||
.noquarterscanlines
|
||||
cmp dh,'Q'
|
||||
jne .nohq3xfilter
|
||||
xor ebx,ebx
|
||||
mov bl,[cvidmode]
|
||||
cmp byte[GUIHQ3X+ebx],0
|
||||
je .nohq3xfilter
|
||||
xor byte[hq3xFilter],1
|
||||
jz .nohq3xfilter
|
||||
mov byte[scanlines],0
|
||||
mov byte[cfgscanline],0
|
||||
mov byte[En2xSaI],0
|
||||
mov byte[antienab],0
|
||||
mov byte[cfginterp],0
|
||||
.nohq3xfilter
|
||||
cmp dh,'X'
|
||||
jne .no2xsai
|
||||
xor ebx,ebx
|
||||
@@ -1176,19 +1196,6 @@ GUIVideoKeys:
|
||||
je .nobilinearfilter
|
||||
xor byte[BilinearFilter],1
|
||||
.nobilinearfilter
|
||||
%ifdef __WIN32__
|
||||
cmp dh,'T'
|
||||
jne .notriplebufferwin
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUITBWVID+eax],0
|
||||
je near .notriplebufferwin
|
||||
xor byte[TripleBufferWin],1
|
||||
; mov byte[vsyncon],0
|
||||
; mov byte[cfgvsync],0
|
||||
call initDirectDraw
|
||||
.notriplebufferwin
|
||||
%endif
|
||||
%ifdef __MSDOS__
|
||||
cmp dh,'T'
|
||||
jne .notriplebuffer
|
||||
@@ -1212,7 +1219,6 @@ GUIVideoKeys:
|
||||
mov al,[vsyncon]
|
||||
mov [cfgvsync],al
|
||||
%ifdef __WIN32__
|
||||
; mov byte[TripleBufferWin],0
|
||||
call initDirectDraw
|
||||
%endif
|
||||
%ifdef __MSDOS__
|
||||
|
||||
@@ -1380,6 +1380,21 @@ GUIWinClicked:
|
||||
%%noclick
|
||||
%endmacro
|
||||
|
||||
%macro GUIClickCButtonHQ 3
|
||||
cmp eax,%1+1
|
||||
jl %%noclick
|
||||
cmp edx,%2+3
|
||||
jl %%noclick
|
||||
cmp eax,%1+6
|
||||
jg %%noclick
|
||||
cmp edx,%2+8
|
||||
jg %%noclick
|
||||
xor %3,1
|
||||
jz %%noclick
|
||||
mov byte[En2xSaI],0
|
||||
%%noclick
|
||||
%endmacro
|
||||
|
||||
%macro GUIClickCButtonT 4
|
||||
cmp eax,%1+1
|
||||
jl %%noclick
|
||||
@@ -2301,8 +2316,8 @@ DisplayGUIVideoClick:
|
||||
xor ebx,ebx
|
||||
mov bl,[cvidmode]
|
||||
cmp byte[GUISLVID+ebx],0
|
||||
GUIClickCButton4 21,114,byte[scanlines],byte[cfgscanline],1
|
||||
je near .nocheckboxb
|
||||
GUIClickCButton4 21,114,byte[scanlines],byte[cfgscanline],1
|
||||
.nocheckboxb
|
||||
xor ebx,ebx
|
||||
mov bl,[cvidmode]
|
||||
@@ -2330,14 +2345,12 @@ DisplayGUIVideoClick:
|
||||
GUIClickCButton4 61,114,byte[scanlines],byte[cfgscanline],3
|
||||
GUIClickCButton4 101,114,byte[scanlines],byte[cfgscanline],2
|
||||
.nohsline
|
||||
%ifdef __WIN32__
|
||||
xor ebx,ebx
|
||||
mov bl,[cvidmode]
|
||||
cmp byte[GUITBWVID+ebx],0
|
||||
je near .notriplebufferwin
|
||||
GUIClickCButtonf 11,123,byte[TripleBufferWin],initDirectDraw
|
||||
.notriplebufferwin
|
||||
%endif
|
||||
cmp byte[GUIHQ3X+ebx],0
|
||||
je .nocheckboxhq3x
|
||||
GUIClickCButtonHQ 11,123,byte[hq3xFilter]
|
||||
.nocheckboxhq3x
|
||||
xor ebx,ebx
|
||||
mov bl,[cvidmode]
|
||||
cmp byte[GUI2xVID+ebx],0
|
||||
|
||||
@@ -1643,6 +1643,7 @@ DisplayGUIVideo:
|
||||
jmp .no2xSaIdis
|
||||
.2xSaIdis
|
||||
mov byte[En2xSaI],0
|
||||
mov byte[hq3xFilter],0
|
||||
.no2xSaIdis
|
||||
cmp byte[En2xSaI],0
|
||||
je .no2xsaidis
|
||||
@@ -1650,9 +1651,16 @@ DisplayGUIVideo:
|
||||
.no2xsaidis
|
||||
cmp byte[En2xSaI],0
|
||||
je .no2xsaien
|
||||
mov byte[hq3xFilter],0
|
||||
mov byte[scanlines],0
|
||||
mov byte[antienab],0
|
||||
.no2xsaien
|
||||
cmp byte[hq3xFilter],0
|
||||
je .nohq3xen
|
||||
mov byte[En2xSaI],0
|
||||
mov byte[scanlines],0
|
||||
mov byte[antienab],0
|
||||
.nohq3xen
|
||||
; Video Modes List/Scanlines/Interpolation/Full(Small) Screen
|
||||
GUIDrawWindowBox 5,GUIVideoDisp
|
||||
mov byte[GUItextcolor],217
|
||||
@@ -1687,12 +1695,6 @@ DisplayGUIVideo:
|
||||
GUIOuttextwin2u 5,76,119,GUIVideoTexta2,0
|
||||
GUIOuttextwin2u 5,116,119,GUIVideoTexta3,0
|
||||
.notexta
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUITBWVID+eax],0
|
||||
je near .nottbw
|
||||
GUIOuttextwin2u 5,26,128,GUIVideoText7,0
|
||||
.nottbw
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUI2xVID+eax],0
|
||||
@@ -1758,6 +1760,12 @@ DisplayGUIVideo:
|
||||
je .notext8
|
||||
GUIOuttextwin2u 5,26,178,GUIVideoText8b,0
|
||||
.notext8
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUIHQ3X+eax],0
|
||||
je near .notext11
|
||||
GUIOuttextwin2u 5,26,128,GUIVideoTexthq3x,1
|
||||
.notext11
|
||||
GUIOuttextwin2u 5,26,188,GUIVideoText8c,0
|
||||
%ifndef __LINUX__
|
||||
GUIOuttextwin2u 5,130,188,GUIVideoText9,0
|
||||
@@ -1788,12 +1796,6 @@ DisplayGUIVideo:
|
||||
GUIOuttextwin2 5,75,118,GUIVideoTexta2
|
||||
GUIOuttextwin2 5,115,118,GUIVideoTexta3
|
||||
.notextab
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUITBWVID+eax],0
|
||||
je near .nottbwb
|
||||
GUIOuttextwin2 5,25,127,GUIVideoText7
|
||||
.nottbwb
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUI2xVID+eax],0
|
||||
@@ -1859,6 +1861,12 @@ DisplayGUIVideo:
|
||||
je .notext8b
|
||||
GUIOuttextwin2 5,25,177,GUIVideoText8b
|
||||
.notext8b
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUIHQ3X+eax],0
|
||||
je near .notext11b
|
||||
GUIOuttextwin2 5,25,127,GUIVideoTexthq3x
|
||||
.notext11b
|
||||
GUIOuttextwin2 5,25,187,GUIVideoText8c
|
||||
%ifndef __LINUX__
|
||||
GUIOuttextwin2 5,129,187,GUIVideoText9
|
||||
@@ -1901,17 +1909,6 @@ DisplayGUIVideo:
|
||||
.nocheckboxv2
|
||||
GUIDisplayIconWin 5,101,114,[GUITemp]
|
||||
.nocheckboxw
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUITBWVID+eax],0
|
||||
je near .nocheckboxslw2
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxUC
|
||||
cmp byte[TripleBufferWin],1
|
||||
jne .nocheckboxslw
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxC
|
||||
.nocheckboxslw
|
||||
GUIDisplayIconWin 5,11,123,[GUITemp]
|
||||
.nocheckboxslw2
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUI2xVID+eax],0
|
||||
@@ -2031,6 +2028,17 @@ DisplayGUIVideo:
|
||||
.nocheckbox3
|
||||
GUIDisplayIconWin 5,11,98,[GUITemp]
|
||||
.nocheckbox3b
|
||||
xor eax,eax
|
||||
mov al,[cvidmode]
|
||||
cmp byte[GUIHQ3X+eax],0
|
||||
je near .nocheckbox2hq3x
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxUC
|
||||
cmp byte[hq3xFilter],0
|
||||
je .nocheckbox1hq3x
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxC
|
||||
.nocheckbox1hq3x
|
||||
GUIDisplayIconWin 5,11,123,[GUITemp]
|
||||
.nocheckbox2hq3x
|
||||
DrawGUIWinBox 5,5,26,115,69,167
|
||||
DrawSlideBarWin 5,117,34,[GUIcurrentvideoviewloc],[NumVideoModes],5,28,GUIVStA
|
||||
cmp byte[GUICHold],5
|
||||
@@ -2150,6 +2158,7 @@ GUIVideoTextd2 db 'SUPER 2XSAI ENGINE',0
|
||||
GUIVideoTextbf db 'BILINEAR FILTER',0
|
||||
GUIVideoText3 db 'INTERPOLATION',0 ; -y
|
||||
GUIVideoText4 db 'EAGLE ENGINE',0 ; -y
|
||||
GUIVideoTexthq3x db 'HQ3X FILTER',0
|
||||
GUIVideoText5 db 'FULL SCREEN',0 ; -c
|
||||
GUIVideoText5b db 'WIDE SCREEN',0 ; -c
|
||||
GUIVideoText6 db 'SMALL SCREEN',0 ; -c
|
||||
@@ -5241,10 +5250,10 @@ GUIGUIAboutText3 db ' ZSKNIGHT',0
|
||||
GUIGUIAboutText4 db ' _DEMO_',0
|
||||
GUIGUIAboutText6c db ' PAGEFAULT',0
|
||||
GUIGUIAboutText5 db 'ASSISTANT CODERS : ',0
|
||||
GUIGUIAboutText6 db ' PHAROS NACH',0
|
||||
GUIGUIAboutText6b db ' TEUF HPSOLO',0
|
||||
GUIGUIAboutText6d db ' THEODDONE33 STAINLESS',0
|
||||
GUIGUIAboutText6e db ' ',0
|
||||
GUIGUIAboutText6 db ' PHAROS',0
|
||||
GUIGUIAboutText6b db ' TEUF',0
|
||||
GUIGUIAboutText6d db ' THEODDONE33',0
|
||||
GUIGUIAboutText6e db ' STAINLESS',0
|
||||
|
||||
%ifdef __MSDOS__
|
||||
GUIGUIAboutText7 db 'DOS VERSION',0
|
||||
|
||||
@@ -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 initc.obj ui.obj vcache.obj water.obj smoke.obj burn.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
|
||||
/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 initc.obj ui.obj vcache.obj water.obj smoke.obj burn.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\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
|
||||
|
||||
@@ -49,11 +49,12 @@ VIDEOBJ=${VIDEODIR}/makev16b.obj ${VIDEODIR}/makev16t.obj ${VIDEODIR}/makevid.ob
|
||||
${VIDEODIR}/mode7ext.obj ${VIDEODIR}/mv16tms.obj ${VIDEODIR}/newg162.obj\
|
||||
${VIDEODIR}/newgfx16.obj ${VIDEODIR}/newgfx2.obj ${VIDEODIR}/newgfx.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
|
||||
|
||||
WINOBJ=${WINDIR}/copyvwin.obj ${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj\
|
||||
${WINDIR}/zloaderw.obj ${WINDIR}/ztcp.obj ${WINDIR}/zipxw.obj\
|
||||
${WINDIR}/zfilew.obj
|
||||
WINOBJ=${WINDIR}/copyvwin.obj \
|
||||
${WINDIR}/winintrf.obj ${WINDIR}/winlink.obj ${WINDIR}/zloaderw.obj\
|
||||
${WINDIR}/ztcp.obj ${WINDIR}/zipxw.obj ${WINDIR}/zfilew.obj
|
||||
|
||||
WINDOSOBJ=${DOSDIR}/debug.obj ${DOSDIR}/joy.obj ${DOSDIR}/modemrtn.obj ${DOSDIR}/vesa2.obj\
|
||||
${DOSDIR}/initvid.obj ${DOSDIR}/sw.obj ${DOSDIR}/gppro.obj ${DOSDIR}/vesa12.obj\
|
||||
@@ -115,6 +116,9 @@ smoke.obj: smoke.c
|
||||
burn.obj: burn.c
|
||||
${VIDEODIR}/2xsaiw.obj: ${VIDEODIR}/2xsaiw.asm macros.mac
|
||||
${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}/hq3x16.obj: ${VIDEODIR}/hq3x16.asm macros.mac
|
||||
${VIDEODIR}/hq3x32.obj: ${VIDEODIR}/hq3x32.asm macros.mac
|
||||
${CHIPDIR}/sa1regs.obj: ${CHIPDIR}/sa1regs.asm macros.mac\
|
||||
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
|
||||
${CHIPDIR}/sfxproc.obj: ${CHIPDIR}/sfxproc.asm macros.mac\
|
||||
|
||||
@@ -212,6 +212,7 @@ NEWSYM romispal, resb 1 ; 0 = NTSC, 1 = PAL
|
||||
NEWSYM enterpress, resb 1 ; if enter is to be issued (0 = yes)
|
||||
NEWSYM newgfx16b, resb 1
|
||||
NEWSYM BitConv32Ptr, resd 1
|
||||
NEWSYM RGBtoYUVPtr, resd 1
|
||||
|
||||
NEWSYM previdmode, resb 1 ; previous video mode
|
||||
NEWSYM cbitmode, resb 1 ; bit mode, 0=8bit, 1=16bit
|
||||
@@ -681,6 +682,7 @@ NEWSYM allocptr
|
||||
AllocmemFail 65536*4*4+4096,vcache2bs,outofmemory
|
||||
AllocmemFail 65536*4*2+4096,vcache4bs,outofmemory
|
||||
AllocmemFail 65536*4+4096,vcache8bs,outofmemory
|
||||
AllocmemFail 65536*4+4096,RGBtoYUVPtr,outofmemory
|
||||
mov byte[newgfx16b],1
|
||||
AllocmemOkay 4096*1024+32768*2+2048*1024+4096,romaptr,.memoryokay
|
||||
mov byte[Sup48mbit],0
|
||||
|
||||
2612
zsnes/src/video/hq3x16.asm
Normal file
2612
zsnes/src/video/hq3x16.asm
Normal file
File diff suppressed because it is too large
Load Diff
2572
zsnes/src/video/hq3x32.asm
Normal file
2572
zsnes/src/video/hq3x32.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1250,27 +1250,29 @@ db '1280x1024 DS FULL',0 ;32
|
||||
|
||||
; Video Mode Feature Availability (1 = Available, 0 = Not Available)
|
||||
; Left side starts with Video Mode 0
|
||||
NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode
|
||||
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics Mode Available
|
||||
NEWSYM GUISLVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Scanlines
|
||||
NEWSYM GUIINVID, 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,0,0,0 ; Interpolation
|
||||
NEWSYM GUII2VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Interpolation(w)
|
||||
NEWSYM GUIEAVID, 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,0,0,0 ; Eagle
|
||||
NEWSYM GUIIEVID, 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,0,0,0 ; (Interp | Eagle)
|
||||
NEWSYM GUIFSVID, 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,0,0,0 ; Full Screen
|
||||
NEWSYM GUIWSVID, 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,0,0,0 ; (Full Scr. | Wide Scr.)
|
||||
NEWSYM GUISSVID, 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,0,0,0 ; Small Screen
|
||||
NEWSYM GUITBVID, 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,0,0,0 ; Triple Buffering
|
||||
NEWSYM GUIHSVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Half/Quarter Scanlines
|
||||
NEWSYM GUI2xVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; 2xSaI/Super Eagle Engines
|
||||
NEWSYM GUIM7VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; ?Mode 7 video thing?
|
||||
NEWSYM GUIWFVID, 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 ; If Windows Full Screen
|
||||
NEWSYM GUIDSIZE, db 0,0,0,1,0,1,1,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1
|
||||
NEWSYM GUIRATIO, db 0,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,0,0,0,0,0,0
|
||||
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,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 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
|
||||
; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
|
||||
NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode
|
||||
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics Mode Available
|
||||
NEWSYM GUISLVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Scanlines
|
||||
NEWSYM GUIINVID, 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,0,0,0 ; Interpolation
|
||||
NEWSYM GUII2VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Interpolation(w)
|
||||
NEWSYM GUIEAVID, 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,0,0,0 ; Eagle
|
||||
NEWSYM GUIIEVID, 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,0,0,0 ; (Interp | Eagle)
|
||||
NEWSYM GUIFSVID, 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,0,0,0 ; Full Screen
|
||||
NEWSYM GUIWSVID, 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,0,0,0 ; (Full Scr. | Wide Scr.)
|
||||
NEWSYM GUISSVID, 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,0,0,0 ; Small Screen
|
||||
NEWSYM GUITBVID, 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,0,0,0 ; Triple Buffering
|
||||
NEWSYM GUIHSVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; Half/Quarter Scanlines
|
||||
NEWSYM GUI2xVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; 2xSaI/Super Eagle Engines
|
||||
NEWSYM GUIM7VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1 ; ?Mode 7 video thing?
|
||||
NEWSYM GUIWFVID, 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 ; If Windows Full Screen
|
||||
NEWSYM GUIDSIZE, db 0,0,0,1,0,1,1,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1
|
||||
NEWSYM GUIRATIO, db 0,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,0,0,0,0,0,0
|
||||
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,0,0,0
|
||||
NEWSYM GUITBWVID, 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,0,0,0 ; 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 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,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter
|
||||
|
||||
|
||||
SECTION .text
|
||||
|
||||
@@ -268,40 +268,31 @@ void DDrawError(){
|
||||
}
|
||||
|
||||
extern "C" BYTE vsyncon;
|
||||
extern "C" BYTE TripleBufferWin;
|
||||
|
||||
void DrawScreen()
|
||||
{
|
||||
if (FullScreen == 1)
|
||||
{
|
||||
if (TripleBufferWin == 1)
|
||||
if (FullScreen == 1)
|
||||
{
|
||||
DDBLTFX ddbltfx;
|
||||
|
||||
ddbltfx.dwSize = sizeof(ddbltfx);
|
||||
ddbltfx.dwFillColor = 0;
|
||||
|
||||
DD_BackBuffer->Blt( NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx );
|
||||
DD_BackBuffer->Blt(&rcWindow, DD_CFB, &BlitArea, DDBLT_WAIT, NULL);
|
||||
DD_Primary->Flip(NULL, DDFLIP_WAIT);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vsyncon == 1)
|
||||
{
|
||||
if (lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL) != DD_OK)
|
||||
{
|
||||
DD_BackBuffer->Blt(NULL, DD_CFB, &BlitArea, DDBLT_WAIT, NULL);
|
||||
DD_Primary->Flip(NULL, DDFLIP_WAIT);
|
||||
DDrawError();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vsyncon == 1)
|
||||
{
|
||||
if (lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL) != DD_OK)
|
||||
{
|
||||
DDrawError();
|
||||
}
|
||||
}
|
||||
DD_Primary->Blt(&rcWindow, DD_CFB, &BlitArea, DDBLT_WAIT, NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vsyncon == 1)
|
||||
{
|
||||
if (lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL) != DD_OK)
|
||||
{
|
||||
DDrawError();
|
||||
}
|
||||
}
|
||||
DD_Primary->Blt(&rcWindow, DD_CFB, &BlitArea, DDBLT_WAIT, NULL);
|
||||
}
|
||||
}
|
||||
DD_Primary->Blt(&rcWindow, DD_CFB, &BlitArea, DDBLT_WAIT, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
DWORD InputEn=0;
|
||||
@@ -1260,6 +1251,7 @@ void TestJoy()
|
||||
|
||||
extern "C" DWORD converta;
|
||||
extern "C" unsigned int BitConv32Ptr;
|
||||
extern "C" unsigned int RGBtoYUVPtr;
|
||||
|
||||
int InitDirectDraw()
|
||||
{
|
||||
@@ -1268,7 +1260,7 @@ int InitDirectDraw()
|
||||
HRESULT hr;
|
||||
char message1[256];
|
||||
unsigned int color32,ScreenPtr2;
|
||||
int i;
|
||||
int i, j, k, r, g, b, Y, u, v;
|
||||
|
||||
ScreenPtr2=BitConv32Ptr;
|
||||
for(i=0;i<65536;i++)
|
||||
@@ -1280,17 +1272,46 @@ int InitDirectDraw()
|
||||
ScreenPtr2+=4;
|
||||
}
|
||||
|
||||
for (i=0; i<32; i++)
|
||||
for (j=0; j<64; j++)
|
||||
for (k=0; k<32; k++)
|
||||
{
|
||||
r = i << 3;
|
||||
g = j << 2;
|
||||
b = k << 3;
|
||||
Y = (r + g + b) >> 2;
|
||||
u = 128 + ((r - b) >> 2);
|
||||
v = 128 + ((-r + 2*g -b)>>3);
|
||||
*(((unsigned int *)RGBtoYUVPtr) + (i << 11) + (j << 5) + k) = (Y<<16) + (u<<8) + v;
|
||||
}
|
||||
|
||||
if (!hMainWindow)
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ReleaseDirectDraw();
|
||||
|
||||
|
||||
GetClientRect(hMainWindow, &rcWindow);
|
||||
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow);
|
||||
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow + 1);
|
||||
|
||||
if (SurfaceX == 768 && SurfaceY == 720)
|
||||
{
|
||||
int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2;
|
||||
int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2;
|
||||
if (marginx>0)
|
||||
{
|
||||
rcWindow.left += marginx;
|
||||
rcWindow.right -= marginx;
|
||||
}
|
||||
if (marginy>0)
|
||||
{
|
||||
rcWindow.top += marginy;
|
||||
rcWindow.bottom -= marginy;
|
||||
}
|
||||
}
|
||||
|
||||
if (pDirectDrawCreateEx(NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK)
|
||||
{
|
||||
MessageBox(NULL, "DirectDrawCreateEx failed.", "DirectDraw Error", MB_ICONERROR);
|
||||
@@ -1332,7 +1353,18 @@ int InitDirectDraw()
|
||||
ddsd2.ddsCaps.dwCaps |= DDSCAPS_FLIP | DDSCAPS_COMPLEX;
|
||||
}
|
||||
|
||||
if (lpDD->CreateSurface(&ddsd2, &DD_Primary, NULL) != DD_OK)
|
||||
HRESULT hRes = lpDD->CreateSurface(&ddsd2, &DD_Primary, NULL);
|
||||
|
||||
if (FullScreen == 1)
|
||||
{
|
||||
if ((hRes == DDERR_OUTOFMEMORY) || (hRes == DDERR_OUTOFVIDEOMEMORY))
|
||||
{
|
||||
ddsd2.dwBackBufferCount = 1;
|
||||
hRes = lpDD->CreateSurface(&ddsd2, &DD_Primary, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (hRes != DD_OK)
|
||||
{
|
||||
MessageBox(NULL, "IDirectDraw7::CreateSurface failed.", "DirectDraw Error", MB_ICONERROR);
|
||||
return FALSE;
|
||||
@@ -1545,13 +1577,16 @@ void Stop36HZ(void)
|
||||
|
||||
char WinMessage[256];
|
||||
extern unsigned char cvidmode;
|
||||
extern unsigned char hq3xFilter;
|
||||
DWORD FirstVid=1;
|
||||
DWORD FirstFull=1;
|
||||
DWORD SMode=0;
|
||||
DWORD DSMode=0;
|
||||
DWORD prevHQ3XMode=-1;
|
||||
extern BYTE GUIWFVID[];
|
||||
extern BYTE GUISMODE[];
|
||||
extern BYTE GUIDSMODE[];
|
||||
extern BYTE GUIHQ3X[];
|
||||
extern unsigned short resolutn;
|
||||
void clearwin();
|
||||
|
||||
@@ -1563,10 +1598,15 @@ void initwinvideo(void)
|
||||
WINDOWPLACEMENT wndpl;
|
||||
RECT rc1, swrect;
|
||||
DWORD newmode=0;
|
||||
DWORD HQ3XMode=0;
|
||||
|
||||
if (CurMode!=cvidmode)
|
||||
if ((GUIHQ3X[cvidmode]!=0) && (hq3xFilter!=0))
|
||||
HQ3XMode=1;
|
||||
|
||||
if ((CurMode!=cvidmode) || (prevHQ3XMode!=HQ3XMode))
|
||||
{
|
||||
CurMode=cvidmode;
|
||||
prevHQ3XMode=HQ3XMode;
|
||||
newmode=1;
|
||||
SurfaceX=256;
|
||||
SurfaceY=240;
|
||||
@@ -1631,8 +1671,16 @@ void initwinvideo(void)
|
||||
case 10:
|
||||
WindowWidth=768;
|
||||
WindowHeight=672;
|
||||
SurfaceX=512;
|
||||
SurfaceY=480;
|
||||
if (HQ3XMode!=0)
|
||||
{
|
||||
SurfaceX=768;
|
||||
SurfaceY=720;
|
||||
}
|
||||
else
|
||||
{
|
||||
SurfaceX=512;
|
||||
SurfaceY=480;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
WindowWidth=800;
|
||||
@@ -1651,8 +1699,16 @@ void initwinvideo(void)
|
||||
case 14:
|
||||
WindowWidth=800;
|
||||
WindowHeight=600;
|
||||
SurfaceX=640;
|
||||
SurfaceY=480;
|
||||
if (HQ3XMode!=0)
|
||||
{
|
||||
SurfaceX=768;
|
||||
SurfaceY=720;
|
||||
}
|
||||
else
|
||||
{
|
||||
SurfaceX=640;
|
||||
SurfaceY=480;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
WindowWidth=800;
|
||||
@@ -1677,8 +1733,16 @@ void initwinvideo(void)
|
||||
case 19:
|
||||
WindowWidth=1024;
|
||||
WindowHeight=768;
|
||||
SurfaceX=640;
|
||||
SurfaceY=480;
|
||||
if (HQ3XMode!=0)
|
||||
{
|
||||
SurfaceX=768;
|
||||
SurfaceY=720;
|
||||
}
|
||||
else
|
||||
{
|
||||
SurfaceX=640;
|
||||
SurfaceY=480;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
WindowWidth=1024;
|
||||
@@ -1776,6 +1840,8 @@ void initwinvideo(void)
|
||||
BlitArea.bottom = SurfaceY;
|
||||
}
|
||||
|
||||
if (SurfaceX == 768) BlitArea.bottom = (SurfaceY/240)*resolutn;
|
||||
|
||||
if (PrevRes == 0) PrevRes = resolutn;
|
||||
|
||||
}
|
||||
@@ -1803,10 +1869,26 @@ void initwinvideo(void)
|
||||
|
||||
AdjustWindowRectEx(&rc1,GetWindowLong(hMainWindow, GWL_STYLE),
|
||||
GetMenu(hMainWindow) != NULL, GetWindowLong(hMainWindow, GWL_EXSTYLE));
|
||||
|
||||
|
||||
GetClientRect(hMainWindow, &rcWindow);
|
||||
ClientToScreen(hMainWindow, (LPPOINT) &rcWindow);
|
||||
ClientToScreen(hMainWindow, (LPPOINT) &rcWindow + 1);
|
||||
|
||||
if (SurfaceX == 768 && SurfaceY == 720)
|
||||
{
|
||||
int marginx = (rcWindow.right - rcWindow.left - BlitArea.right + BlitArea.left)/2;
|
||||
int marginy = (rcWindow.bottom - rcWindow.top - BlitArea.bottom + BlitArea.top)/2;
|
||||
if (marginx>0)
|
||||
{
|
||||
rcWindow.left += marginx;
|
||||
rcWindow.right -= marginx;
|
||||
}
|
||||
if (marginy>0)
|
||||
{
|
||||
rcWindow.top += marginy;
|
||||
rcWindow.bottom -= marginy;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2057,6 +2139,8 @@ extern DWORD AddEndBytes;
|
||||
extern DWORD NumBytesPerLine;
|
||||
extern unsigned char * WinVidMemStart;
|
||||
extern void copy640x480x16bwin(void);
|
||||
extern void copy768x720x16bwin(void);
|
||||
extern void copy768x720x32bwin(void);
|
||||
extern unsigned char NGNoTransp;
|
||||
extern unsigned char newengen;
|
||||
extern void ClearWin16();
|
||||
@@ -2128,7 +2212,7 @@ void drawscreenwin(void)
|
||||
{
|
||||
BlitArea.bottom = (SurfaceY/240)*224;
|
||||
if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY;
|
||||
if ((SurfaceX == 256 || SurfaceX == 512) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/239)*224;
|
||||
if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/239)*224;
|
||||
initwinvideo();
|
||||
PrevRes = resolutn;
|
||||
}
|
||||
@@ -2137,11 +2221,24 @@ void drawscreenwin(void)
|
||||
{
|
||||
BlitArea.bottom = (SurfaceY/240)*239;
|
||||
if (SurfaceX == 512 && DSMode == 1) BlitArea.bottom = SurfaceY;
|
||||
if ((SurfaceX == 256 || SurfaceX == 512) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/224)*239;
|
||||
if ((SurfaceX == 256 || SurfaceX == 512 || SurfaceX == 768) && (SMode == 0 && DSMode == 0)) WindowHeight = (WindowHeight/224)*239;
|
||||
initwinvideo();
|
||||
PrevRes = resolutn;
|
||||
}
|
||||
|
||||
DWORD HQ3XMode=0;
|
||||
|
||||
if (MMXSupport == 0)
|
||||
hq3xFilter=0;
|
||||
else
|
||||
{
|
||||
if ((GUIHQ3X[cvidmode]!=0) && (hq3xFilter!=0))
|
||||
HQ3XMode=1;
|
||||
}
|
||||
|
||||
if (prevHQ3XMode!=HQ3XMode)
|
||||
initwinvideo();
|
||||
|
||||
SurfBufD=(DWORD) &SurfBuf[0];
|
||||
SURFDW=(DWORD *) &SurfBuf[0];
|
||||
|
||||
@@ -2315,6 +2412,41 @@ void drawscreenwin(void)
|
||||
drawscreenwin();
|
||||
}
|
||||
}
|
||||
if (SurfaceX == 768 && SurfaceY == 720)
|
||||
{
|
||||
switch (BitDepth)
|
||||
{
|
||||
case 16:
|
||||
AddEndBytes=pitch-768*2;
|
||||
NumBytesPerLine=pitch;
|
||||
WinVidMemStart=&SurfBuf[0];
|
||||
_asm
|
||||
{
|
||||
pushad
|
||||
call copy768x720x16bwin
|
||||
popad
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
AddEndBytes=pitch-768*4;
|
||||
NumBytesPerLine=pitch;
|
||||
WinVidMemStart=&SurfBuf[0];
|
||||
_asm
|
||||
{
|
||||
pushad
|
||||
call copy768x720x32bwin
|
||||
popad
|
||||
}
|
||||
break;
|
||||
default:
|
||||
UnlockSurface();
|
||||
MessageBox (NULL, "Mode only available in 16 and 32 bit color", "DDRAW Error" , MB_ICONERROR );
|
||||
cvidmode=2;
|
||||
initwinvideo();
|
||||
Sleep(1000);
|
||||
drawscreenwin();
|
||||
}
|
||||
}
|
||||
|
||||
UnlockSurface();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user