Files
ZSNES/zsnes/src/gui/guiwindp.inc
2004-01-09 01:06:54 +00:00

6336 lines
169 KiB
PHP

;Copyright (C) 1997-2001 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either
;version 2 of the License, or (at your option) any later
;version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
; Window Display Routines
; Last button value used = 65
GUIStringGreater:
; compares string at esi to edi and returns 1 to al if esi is >, else 0
push esi
cmp word[esi],'.'
je .less
cmp word[esi+32],'.'
je .greater
cmp word[esi],'..'
je .less
cmp word[esi+32],'..'
je .greater
.nextchar
cmp byte[esi],0
je .less
cmp byte[esi+32],0
je .greater
mov al,[esi]
mov cl,[esi+32]
cmp al,'a'
jb .noucase1
cmp al,'z'
ja .noucase1
sub al,'z'-'Z'
.noucase1
cmp cl,'a'
jb .noucase2
cmp cl,'z'
ja .noucase2
sub cl,'z'-'Z'
.noucase2
cmp al,cl
jb .less
ja .greater
inc esi
jmp .nextchar
.less
mov al,0
jmp .skip
.greater
mov al,1
.skip
pop esi
ret
GUIStringGreater2:
; compares string at ebx to edx and returns 1 to al if esi is >, else 0
push edx
push ebx
cmp word[ebx],'.'
je .less
cmp word[edx],'.'
je .greater
cmp word[ebx],'..'
je .less
cmp word[ebx],'..'
je .greater
.nextchar
cmp byte[ebx],0
je .less
cmp byte[edx],0
je .greater
mov al,[ebx]
mov cl,[edx]
cmp al,'a'
jb .noucase1
cmp al,'z'
ja .noucase1
sub al,'z'-'Z'
.noucase1
cmp cl,'a'
jb .noucase2
cmp cl,'z'
ja .noucase2
sub cl,'z'-'Z'
.noucase2
cmp al,cl
jb .less
ja .greater
inc ebx
inc edx
jmp .nextchar
.less
mov al,0
jmp .skip
.greater
mov al,1
.skip
pop ebx
pop edx
ret
%Macro DrawGUILineSc 2
mov dword[GUIcolscaleval],%2
mov edx,%1
push eax
push ecx
call GUIHLines
pop ecx
pop eax
inc ebx
%Endmacro
%Macro DrawGUILine 0
push eax
push ecx
call GUIHLine
pop ecx
pop eax
inc ebx
%Endmacro
%macro DrawTitleBar 0
mov edx,46+157+6
sub edx,[GUIWincoladd]
DrawGUILine
mov edx,42+157+4+4
sub edx,[GUIWincoladd]
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
dec edx
DrawGUILine
mov edx,38+157+4
sub edx,[GUIWincoladd]
DrawGUILine
sub ebx,10
mov edx,44+157+4
sub edx,[GUIWincoladd]
mov esi,9
push ecx
mov ecx,eax
%%loop2
DrawGUILine
dec esi
jnz %%loop2
pop ecx
sub ebx,8
mov edx,40+157+4
sub edx,[GUIWincoladd]
mov esi,9
push eax
mov eax,ecx
%%loop3
DrawGUILine
dec esi
jnz %%loop3
pop eax
%endmacro
%macro drawshadow2 3
mov edx,[GUIwinposy+%1*4]
cmp edx,223
jg near .noshadow
cmp edx,0
jge .noshadclip
mov edx,0
.noshadclip
mov ebx,edx
add ebx,%3
add ebx,9
cmp ebx,0
jl near .noshadow
cmp ebx,223
jng .noshadclip2
mov ebx,223
.noshadclip2
sub ebx,edx
inc ebx
mov edi,edx
shl edi,8
mov eax,edx
shl eax,5
add edi,eax
mov edx,[GUIwinposx+%1*4]
mov ecx,edx
cmp edx,255
jg .noshadow
cmp edx,-3
jnl .noshadclip3
mov edx,-3
.noshadclip3
add ecx,%2
cmp ecx,0
jl .noshadow
cmp ecx,255
jng .noshadclip4
mov ecx,255
.noshadclip4
sub ecx,edx
inc ecx
add edi,edx
add edi,[vidbuffer]
add edi,288*3+3+16
call GUIDrawShadow2
.noshadow
%endmacro
%macro GUIDrawWindowBox 2
mov dword[GUIWincoladd],4
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone
mov dword[GUIWincol],148+5
.noone
cmp byte[cwindrawn],0
jne .nozero
mov dword[GUIWincoladd],0
mov dword[GUIWincol],148
.nozero
drawshadow2 %1,dword[GUIwinsizex+%1*4],dword[GUIwinsizey+%1*4]
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
mov ecx,eax
add ecx,dword[GUIwinsizex+%1*4]
DrawTitleBar
mov esi,dword[GUIwinsizey+%1*4]
dec esi
mov edx,dword[GUIWincol]
add edx,2
.loop
DrawGUILine
dec esi
jnz .loop
mov edx,dword[GUIWincol]
DrawGUILine
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
add ebx,10
mov ecx,eax
mov esi,dword[GUIwinsizey+%1*4]
mov edx,dword[GUIWincol]
add edx,3
dec esi
.loop2
DrawGUILine
dec esi
jnz .loop2
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
add ebx,10
add eax,dword[GUIwinsizex+%1*4]
mov ecx,eax
mov esi,dword[GUIwinsizey+%1*4]
mov edx,dword[GUIWincol]
add edx,1
.loop3
DrawGUILine
dec esi
jnz .loop3
mov ebx,dword[GUIwinposy+%1*4]
add ebx,3
mov edx,dword[GUIwinposx+%1*4]
add edx,3
mov byte[GUItextcolor],184
GUIOuttextwin %2
mov ebx,dword[GUIwinposy+%1*4]
add ebx,2
mov edx,dword[GUIwinposx+%1*4]
add edx,2
mov byte[GUItextcolor],220
cmp byte[GUIWincoladd],0
je .zero2
sub byte[GUItextcolor],6
.zero2
GUIOuttextwin %2
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
add eax,dword[GUIwinsizex+%1*4]
sub eax,10
GUIDisplayIcon GUIIconDataClose
%endmacro
%macro DrawGUIWinBox 6
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
add eax,%2
add ebx,%3
mov ecx,eax
add ecx,%4-%2+1
mov dl,%6
mov esi,%5-%3+1
%%loop
DrawGUILine
dec esi
jnz %%loop
%endmacro
%macro DrawGUIWinBox2 5
mov eax,dword[GUIwinposx+%1*4]
add eax,%2
mov ecx,eax
add ecx,%3-%2+1
mov dl,%5
cmp byte[GUIWincoladd],0
je %%zero
inc dl
%%zero
mov esi,%4
add ebx,dword[GUIwinposy+%1*4]
%%loop
DrawGUILine
dec esi
jnz %%loop
%endmacro
%macro DrawGUIWinBox3 6
mov ecx,%4
mov eax,dword[GUIwinposx+%1*4]
mov ebx,dword[GUIwinposy+%1*4]
add eax,%2
add ebx,%3
add ecx,eax
sub ecx,%2
inc ecx
mov dl,%6
mov esi,%5-%3+1
%%loop
DrawGUILine
dec esi
jnz %%loop
%endmacro
%macro DrawGUIButton 9
mov dl,byte[GUItextcolor]
sub dl,5
cmp byte[GUICBHold],%7
jne %%noa
sub dl,13
%%noa
DrawGUIWinBox %1,%2,%3,%4,%3,dl
sub dl,3
cmp byte[GUICBHold],%7
jne %%nob
add dl,5
%%nob
DrawGUIWinBox %1,%2,%3,%2,%5,dl
sub dl,3
cmp byte[GUICBHold],%7
jne %%noc
add dl,5
%%noc
DrawGUIWinBox %1,%2+1,%3+1,%4-2,%5-2,dl
sub dl,3
cmp byte[GUICBHold],%7
jne %%nod
add dl,5
%%nod
DrawGUIWinBox %1,%4+1,%3+1,%4-2,%5-2,dl
sub dl,3
cmp byte[GUICBHold],%7
jne %%noe
add dl,5
%%noe
DrawGUIWinBox %1,%2,%5,%4-1,%5,dl
cmp byte[GUICBHold],%7
je near %%no2
sub byte[GUItextcolor],15
GUIOuttextwin2 %1,%2+5+%8,%3+4+%9,%6
add byte[GUItextcolor],15
GUIOuttextwin2 %1,%2+4+%8,%3+3+%9,%6
jmp %%yes
%%no2
sub byte[GUItextcolor],18
GUIOuttextwin2 %1,%2+6+%8,%3+5+%9,%6
add byte[GUItextcolor],15
GUIOuttextwin2 %1,%2+5+%8,%3+4+%9,%6
add byte[GUItextcolor],3
%%yes
%endmacro
%macro GUIOuttextwin2load 3
test dword[cloadnleft],80000000h
jnz %%skip
cmp byte[GUIloadfntype],0
jne %%nottype0
mov eax,[cloadnposb]
mov eax,[spcRamcmp+eax*4]
inc eax
mov [cloadnpos],eax
inc dword[cloadnposb]
%%nottype0
GUIOuttextwin2l %1,%2,%3,[cloadnpos]
add dword[cloadnpos],32
dec dword[cloadnleft]
%%skip
%endmacro
%macro GUIDisplayButtonHole 5
mov dword[GUITemp],GUIIconDataButtonHole
cmp %4,%5
jne %%nofill
mov dword[GUITemp],GUIIconDataButtonFill
%%nofill
GUIDisplayIconWin %1,%2,%3,[GUITemp]
%endmacro
; DGUIDisplay
DisplayGUILoad:
GUIDrawWindowBox 1,GUILoadDisp
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
; cmp byte[OSPort],2
; jae near .noloadtypeb
%ifdef __MSDOS__
GUIOuttextwin2 1,21,166,GUILoadText3
GUIOuttextwin2 1,21,174,GUILoadText4
GUIOuttextwin2 1,21,182,GUILoadText5
%endif
.noloadtypeb
GUIOuttextwin2 1,21,192,GUILoadText6
GUIOuttextwin2 1,6,16,GUILoadText7
GUIOuttextwin2 1,161,16,GUILoadText8
GUIOuttextwin2 1,6,138,GUIcurrentdir
GUIOuttextwin2 1,146,172,GUILoadTextB
GUIOuttextwin2 1,155,182,GUILoadTextC
GUIOuttextwin2 1,155,192,GUILoadTextD
GUIOuttextwin2 1,195,182,GUILoadTextE
GUIOuttextwin2 1,195,192,GUILoadTextF
mov dword[cloadmaxlen],39
cmp dword[GUIcurrentfilewin],0
jne .nofiles
; cmp byte[OSPort],2
; jb .nofiles
%ifndef __MSDOS__
mov eax,[GUIcurrentcursloc]
mov eax,[spcRamcmp+eax*4]
inc eax
mov [cloadnpos],eax
GUIOuttextwin2l 1,6,158,[cloadnpos]
%endif
.nofiles
add byte[GUItextcolor],15
; cmp byte[OSPort],2
; jae near .noloadtypec
%ifdef __MSDOS__
GUIOuttextwin2 1,20,165,GUILoadText3
GUIOuttextwin2 1,20,173,GUILoadText4
GUIOuttextwin2 1,20,181,GUILoadText5
%endif
.noloadtypec
GUIOuttextwin2 1,20,191,GUILoadText6
GUIOuttextwin2 1,5,15,GUILoadText7
GUIOuttextwin2 1,160,15,GUILoadText8
GUIOuttextwin2 1,5,137,GUIcurrentdir
GUIOuttextwin2 1,145,171,GUILoadTextB
GUIOuttextwin2 1,154,181,GUILoadTextC
GUIOuttextwin2 1,154,191,GUILoadTextD
GUIOuttextwin2 1,194,181,GUILoadTextE
GUIOuttextwin2 1,194,191,GUILoadTextF
mov dword[cloadmaxlen],39
cmp dword[GUIcurrentfilewin],0
jne .nofilesb
; cmp byte[OSPort],2
; jb .nofilesb
%ifndef __MSDOS__
mov eax,[GUIcurrentcursloc]
mov eax,[spcRamcmp+eax*4]
inc eax
mov [cloadnpos],eax
GUIOuttextwin2l 1,5,157,[cloadnpos]
%endif
.nofilesb
DrawGUIButton 1,186,165,228,176,GUILoadText9,1,0,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
; GUIOuttextwin2 1,6,16,GUILoadText1
; cmp byte[OSPort],2
; jae near .noloadtypee
%ifdef __MSDOS__
GUIOuttextwin2 1,6,157,GUILoadText2
%endif
.noloadtypee
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
; GUIOuttextwin2 1,5,15,GUILoadText1
; cmp byte[OSPort],2
; jae near .noloadtyped
%ifdef __MSDOS__
GUIOuttextwin2 1,5,156,GUILoadText2
%endif
.noloadtyped
DrawGUIWinBox 1,5,25,144,134,167 ; 126 = 6 * 21, 112 = 7 * 16
DrawGUIWinBox 1,160,25,228,134,167 ; 78 = 6 * 13
DrawGUIWinBox 1,5,145,228,152,167 ; 126 = 6 * 21, 112 = 7 * 16
xor ebx,ebx
mov bl,[GUILoadPos]
mov byte[GUILoadTextA+ebx],0
test byte[GUILDFlash],8
jnz .nound
mov byte[GUILoadTextA+ebx],'_'
mov byte[GUILoadTextA+ebx+1],0
.nound
mov ebx,[GUIcurrentcursloc]
sub ebx,[GUIcurrentviewloc]
cmp dword[GUIcurrentfilewin],0
je .files
mov ebx,[GUIcurrentdircursloc]
sub ebx,[GUIcurrentdirviewloc]
.files
mov eax,ebx
lea ebx,[ebx*4]
add ebx,eax
add ebx,eax
add ebx,eax
add ebx,27
cmp dword[GUIcurrentfilewin],0
jne .dir
DrawGUIWinBox2 1,5,144,7,224
jmp .files2
.dir
DrawGUIWinBox2 1,160,228,7,224
.files2
mov byte[GUItextcolor],223
GUIOuttextwin2 1,8,148, GUILoadTextA
mov eax,[spcBuffera]
inc eax
mov dword[cloadnpos],eax
mov eax,[GUIfileentries]
sub eax,[GUIcurrentviewloc]
dec eax
mov dword[cloadnleft],eax
mov eax,[GUIcurrentviewloc]
mov [cloadnposb],eax
shl eax,5
add [cloadnpos],eax
mov dword[cloadmaxlen],23
GUIOuttextwin2load 1,8,29
GUIOuttextwin2load 1,8,29+7
GUIOuttextwin2load 1,8,29+7*2
GUIOuttextwin2load 1,8,29+7*3
GUIOuttextwin2load 1,8,29+7*4
GUIOuttextwin2load 1,8,29+7*5
GUIOuttextwin2load 1,8,29+7*6
GUIOuttextwin2load 1,8,29+7*7
GUIOuttextwin2load 1,8,29+7*8
GUIOuttextwin2load 1,8,29+7*9
GUIOuttextwin2load 1,8,29+7*10
GUIOuttextwin2load 1,8,29+7*11
GUIOuttextwin2load 1,8,29+7*12
GUIOuttextwin2load 1,8,29+7*13
GUIOuttextwin2load 1,8,29+7*14
mov eax,[spcBuffera]
inc eax
mov dword[cloadnpos],eax
mov eax,[GUIdirentries]
sub eax,[GUIcurrentdirviewloc]
dec eax
mov dword[cloadnleft],eax
mov eax,[GUIcurrentdirviewloc]
add eax,[GUIfileentries]
mov [cloadnposb],eax
shl eax,5
add [cloadnpos],eax
mov dword[cloadmaxlen],11
GUIOuttextwin2load 1,164,29
GUIOuttextwin2load 1,164,29+7
GUIOuttextwin2load 1,164,29+7*2
GUIOuttextwin2load 1,164,29+7*3
GUIOuttextwin2load 1,164,29+7*4
GUIOuttextwin2load 1,164,29+7*5
GUIOuttextwin2load 1,164,29+7*6
GUIOuttextwin2load 1,164,29+7*7
GUIOuttextwin2load 1,164,29+7*8
GUIOuttextwin2load 1,164,29+7*9
GUIOuttextwin2load 1,164,29+7*10
GUIOuttextwin2load 1,164,29+7*11
GUIOuttextwin2load 1,164,29+7*12
GUIOuttextwin2load 1,164,29+7*13
GUIOuttextwin2load 1,164,29+7*14
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
GUIOuttextwin2 1,7,147, GUILoadTextA
mov eax,[spcBuffera]
inc eax
mov dword[cloadnpos],eax
mov eax,[GUIfileentries]
sub eax,[GUIcurrentviewloc]
dec eax
mov dword[cloadnleft],eax
mov eax,[GUIcurrentviewloc]
mov [cloadnposb],eax
shl eax,5
add [cloadnpos],eax
mov dword[cloadmaxlen],23
GUIOuttextwin2load 1,7,28
GUIOuttextwin2load 1,7,28+7
GUIOuttextwin2load 1,7,28+7*2
GUIOuttextwin2load 1,7,28+7*3
GUIOuttextwin2load 1,7,28+7*4
GUIOuttextwin2load 1,7,28+7*5
GUIOuttextwin2load 1,7,28+7*6
GUIOuttextwin2load 1,7,28+7*7
GUIOuttextwin2load 1,7,28+7*8
GUIOuttextwin2load 1,7,28+7*9
GUIOuttextwin2load 1,7,28+7*10
GUIOuttextwin2load 1,7,28+7*11
GUIOuttextwin2load 1,7,28+7*12
GUIOuttextwin2load 1,7,28+7*13
GUIOuttextwin2load 1,7,28+7*14
mov eax,[spcBuffera]
inc eax
mov dword[cloadnpos],eax
mov eax,[GUIdirentries]
sub eax,[GUIcurrentdirviewloc]
dec eax
mov dword[cloadnleft],eax
mov eax,[GUIcurrentdirviewloc]
add eax,[GUIfileentries]
mov [cloadnposb],eax
shl eax,5
add [cloadnpos],eax
mov dword[cloadmaxlen],11
GUIOuttextwin2load 1,163,28
GUIOuttextwin2load 1,163,28+7
GUIOuttextwin2load 1,163,28+7*2
GUIOuttextwin2load 1,163,28+7*3
GUIOuttextwin2load 1,163,28+7*4
GUIOuttextwin2load 1,163,28+7*5
GUIOuttextwin2load 1,163,28+7*6
GUIOuttextwin2load 1,163,28+7*7
GUIOuttextwin2load 1,163,28+7*8
GUIOuttextwin2load 1,163,28+7*9
GUIOuttextwin2load 1,163,28+7*10
GUIOuttextwin2load 1,163,28+7*11
GUIOuttextwin2load 1,163,28+7*12
GUIOuttextwin2load 1,163,28+7*13
GUIOuttextwin2load 1,163,28+7*14
xor ebx,ebx
mov bl,[GUILoadPos]
mov byte[GUILoadTextA+ebx],0
; cmp byte[OSPort],2
; jae near .noloadtype
%ifdef __MSDOS__
GUIDisplayButtonHole 1,9,163,byte[GUIloadfntype],0
GUIDisplayButtonHole 1,9,171,byte[GUIloadfntype],1
GUIDisplayButtonHole 1,9,179,byte[GUIloadfntype],2
%endif
.noloadtype
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[showallext],1
jne .noshowallext
mov dword[GUITemp],GUIIconDataCheckBoxC
.noshowallext
GUIDisplayIconWin 1,10,187,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[ForceROMTiming],1
jne .noforcentsc
mov dword[GUITemp],GUIIconDataCheckBoxC
.noforcentsc
GUIDisplayIconWin 1,144,177,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[ForceROMTiming],2
jne .noforcepal
mov dword[GUITemp],GUIIconDataCheckBoxC
.noforcepal
GUIDisplayIconWin 1,144,187,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[ForceHiLoROM],1
jne .noforcelorom
mov dword[GUITemp],GUIIconDataCheckBoxC
.noforcelorom
GUIDisplayIconWin 1,184,177,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[ForceHiLoROM],2
jne .noforcehirom
mov dword[GUITemp],GUIIconDataCheckBoxC
.noforcehirom
GUIDisplayIconWin 1,184,187,[GUITemp]
; win#,X,Y start, %4-List Loc, %5-List size, %6-Screen size, %7-Bar Size
DrawSlideBarWin 1,146,33,[GUIcurrentviewloc],[GUIfileentries],15,94,GUILStA
cmp byte[GUICHold],1
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin 1,146,25,GUIIconDataUpArrow
cmp byte[GUICHold],1
jne .noholda2
sub byte[GUIWincoladd],3
.noholda2
cmp byte[GUICHold],2
jne .noholdb
add byte[GUIWincoladd],3
.noholdb
GUIDisplayIconWin 1,146,127,GUIIconDataDownArrow
cmp byte[GUICHold],2
jne .noholdb2
sub byte[GUIWincoladd],3
.noholdb2
DrawSlideBarWin 1,230,33,[GUIcurrentdirviewloc],[GUIdirentries],15,94,GUILStB
cmp byte[GUICHold],3
jne .noholdc
add byte[GUIWincoladd],3
.noholdc
GUIDisplayIconWin 1,230,25,GUIIconDataUpArrow
cmp byte[GUICHold],3
jne .noholdc2
sub byte[GUIWincoladd],3
.noholdc2
cmp byte[GUICHold],4
jne .noholdd
add byte[GUIWincoladd],3
.noholdd
GUIDisplayIconWin 1,230,127,GUIIconDataDownArrow
cmp byte[GUICHold],4
jne .noholdd2
sub byte[GUIWincoladd],3
.noholdd2
; Draw borders
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 1,5,24,144,24,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 1,4,25,3,134,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 1,5,135,144,135,dl
mov dl,[GUIWincol]
DrawGUIWinBox 1,160,24,228,24,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 1,159,25,158,134,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 1,160,135,228,135,dl
mov dl,[GUIWincol]
DrawGUIWinBox 1,5,144,228,144,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 1,4,144,3,152,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 1,5,153,228,153,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 1,229,144,228,152,dl
ret
SECTION .data
GUILoadText1 db 'SELECT FILE TO LOAD :',0
GUILoadText2 db 'DISPLAY TYPE :',0
GUILoadText3 db 'NORMAL 8.3 FORMAT',0
GUILoadText4 db 'SNES HEADER NAME',0
GUILoadText5 db 'WIN95 LONG FILENAME',0
GUILoadText6 db 'SHOW ALL EXTENSIONS',0
GUILoadText7 db 'FILENAME',0
GUILoadText8 db 'DIRECTORY',0
GUILoadText9 db 'LOAD',0
GUILoadTextA times 40 db 0
GUILoadTextB db 'FORCE',0
GUILoadTextC db 'NTSC',0
GUILoadTextD db 'PAL',0
GUILoadTextE db 'LOROM',0
GUILoadTextF db 'HIROM',0
SECTION .bss
GUILStA resd 3
GUILStB resd 3
GUILoadPos resb 1
SECTION .text
DisplayGUIReset:
GUIDrawWindowBox 12,GUIResetDisp
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
mov dl,224
cmp byte[GUIWincoladd],0
je .zero4
inc dl
.zero4
cmp byte[GUICResetPos],0
je near .resetboxa
DrawGUIWinBox 12,79,29,117,42,dl
jmp .resetboxb
.resetboxa
DrawGUIWinBox 12,19,29,57,42,dl
.resetboxb
DrawGUIButton 12,20,30,56,41,GUIResetText2,2,0,0
DrawGUIButton 12,80,30,116,41,GUIResetText3,3,0,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 12,6,16,GUIResetText1
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 12,5,15,GUIResetText1
ret
SECTION .data
GUIResetText1 db 'RESET : ARE YOU SURE ?',0
GUIResetText2 db 'YES',0
GUIResetText3 db 'NO',0
SECTION .text
DisplayGUIStates:
GUIDrawWindowBox 14,GUIStatesDisp
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
mov dl,224
cmp byte[GUIWincoladd],0
je .zero4
inc dl
.zero4
cmp byte[GUICStatePos],0
je near .resetboxa
DrawGUIWinBox 14,79,29,117,42,dl
jmp .resetboxb
.resetboxa
DrawGUIWinBox 14,19,29,57,42,dl
.resetboxb
DrawGUIButton 14,20,30,56,41,GUIStatesText3,10,0,0
DrawGUIButton 14,80,30,116,41,GUIStatesText4,11,0,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
cmp byte[GUIStatesText5],1
je .load
GUIOuttextwin2 14,6,16,GUIStatesText1
jmp .save
.load
GUIOuttextwin2 14,6,16,GUIStatesText2
.save
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
cmp byte[GUIStatesText5],1
je .load2
GUIOuttextwin2 14,5,15,GUIStatesText1
jmp .save2
.load2
GUIOuttextwin2 14,5,15,GUIStatesText2
.save2
ret
SECTION .data
GUIStatesText1 db 'OKAY TO SAVE STATE?',0
GUIStatesText2 db 'OKAY TO LOAD STATE?',0
GUIStatesText3 db 'YES',0
GUIStatesText4 db 'NO',0
GUIStatesText5 db 0
SECTION .text
DisplayGUIChoseSave:
GUIDrawWindowBox 2,GUIStateSelDisp
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
mov byte[GUIChoseSaveText2],'0'
GUIOuttextwin2 2,21,31,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'1'
GUIOuttextwin2 2,41,31,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'2'
GUIOuttextwin2 2,61,31,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'3'
GUIOuttextwin2 2,81,31,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'4'
GUIOuttextwin2 2,101,31,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'5'
GUIOuttextwin2 2,21,46,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'6'
GUIOuttextwin2 2,41,46,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'7'
GUIOuttextwin2 2,61,46,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'8'
GUIOuttextwin2 2,81,46,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'9'
GUIOuttextwin2 2,101,46,GUIChoseSaveText2
add byte[GUItextcolor],15
mov byte[GUIChoseSaveText2],'0'
GUIOuttextwin2 2,20,30,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'1'
GUIOuttextwin2 2,40,30,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'2'
GUIOuttextwin2 2,60,30,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'3'
GUIOuttextwin2 2,80,30,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'4'
GUIOuttextwin2 2,100,30,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'5'
GUIOuttextwin2 2,20,45,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'6'
GUIOuttextwin2 2,40,45,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'7'
GUIOuttextwin2 2,60,45,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'8'
GUIOuttextwin2 2,80,45,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'9'
GUIOuttextwin2 2,100,45,GUIChoseSaveText2
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 2,6,16,GUIChoseSaveText1
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 2,5,15,GUIChoseSaveText1
mov dword[GUITemp],GUIIconDataButtonHole
mov ebx,[statefileloc]
mov al,byte[fnamest+ebx]
mov [GUIChoseSaveText2],al
GUIDisplayButtonHole 2,10,28,byte[GUIChoseSaveText2],'t'
GUIDisplayButtonHole 2,30,28,byte[GUIChoseSaveText2],'1'
GUIDisplayButtonHole 2,50,28,byte[GUIChoseSaveText2],'2'
GUIDisplayButtonHole 2,70,28,byte[GUIChoseSaveText2],'3'
GUIDisplayButtonHole 2,90,28,byte[GUIChoseSaveText2],'4'
GUIDisplayButtonHole 2,10,43,byte[GUIChoseSaveText2],'5'
GUIDisplayButtonHole 2,30,43,byte[GUIChoseSaveText2],'6'
GUIDisplayButtonHole 2,50,43,byte[GUIChoseSaveText2],'7'
GUIDisplayButtonHole 2,70,43,byte[GUIChoseSaveText2],'8'
GUIDisplayButtonHole 2,90,43,byte[GUIChoseSaveText2],'9'
ret
SECTION .data
GUIChoseSaveText1 db 'SELECT SAVE SLOT :',0
GUIChoseSaveText2 db '-',0
SECTION .text
%macro DGOptnsDrawBox 3
mov eax,dword[GUIwinposx+9*4]
mov ebx,dword[GUIwinposy+9*4]
add eax,%1
add ebx,%2
mov ecx,eax
add ecx,20
mov dl,167
mov esi,7
%%loop
DrawGUILine
dec esi
jnz %%loop
mov eax,%3
mov ebx,[ScanCodeListing+eax*3]
mov [GUIGameDisplayKy],ebx
mov byte[GUIGameDisplayKy+3],0
mov byte[GUItextcolor],223
GUIOuttextwin2 9,%1+3,%2+2,GUIGameDisplayKy
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je %%zero
mov byte[GUItextcolor],222
%%zero
GUIOuttextwin2 9,%1+2,%2+1,GUIGameDisplayKy
%endmacro
%macro DGOptnsDrawBox2 3
mov eax,dword[GUIwinposx+3*4]
mov ebx,dword[GUIwinposy+3*4]
add eax,%1
add ebx,%2
mov ecx,eax
add ecx,20
mov dl,167
mov esi,7
%%loop
DrawGUILine
dec esi
jnz %%loop
mov eax,%3
mov ebx,[ScanCodeListing+eax*3]
mov [GUIGameDisplayKy],ebx
mov byte[GUIGameDisplayKy+3],0
mov byte[GUItextcolor],223
GUIOuttextwin2 3,%1+3,%2+2,GUIGameDisplayKy
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je %%zero
mov byte[GUItextcolor],222
%%zero
GUIOuttextwin2 3,%1+2,%2+1,GUIGameDisplayKy
%endmacro
%macro GUIInputDispKey 2
mov eax,[edi]
mov [GUIInputTextQ],eax
push edi
DGOptnsDrawBox2 %1,%2,[GUIInputTextQ]
pop edi
add edi,4
%endmacro
DisplayGUIInput:
; Player Select, Joystick/keyboard Type List, Button Assignments
GUIDrawWindowBox 3,GUIInputDisp
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
GUIOuttextwin2 3,6,102,GUIInputText3
GUIOuttextwin2 3,6,112,GUIInputText4
GUIOuttextwin2 3,6,122,GUIInputText5
GUIOuttextwin2 3,6,132,GUIInputText6
GUIOuttextwin2 3,6,142,GUIInputTextD
GUIOuttextwin2 3,6,152,GUIInputTextE
GUIOuttextwin2 3,76,102,GUIInputText7
GUIOuttextwin2 3,76,112,GUIInputText8
GUIOuttextwin2 3,76,122,GUIInputText9
GUIOuttextwin2 3,76,132,GUIInputTextA
GUIOuttextwin2 3,76,142,GUIInputTextB
GUIOuttextwin2 3,76,152,GUIInputTextC
%ifdef __MSDOS__
GUIOuttextwin2 3,20,167,GUIInputTextW
%endif
GUIOuttextwin2 3,156,102,GUIInputText7
GUIOuttextwin2 3,156,112,GUIInputText8
GUIOuttextwin2 3,156,122,GUIInputTextC
GUIOuttextwin2 3,116,102,GUIInputText9
GUIOuttextwin2 3,116,112,GUIInputTextA
GUIOuttextwin2 3,116,122,GUIInputTextB
GUIOuttextwin2 3,153,142,GUIInputTextd
GUIOuttextwin2 3,153,152,GUIInputTexte
GUIOuttextwin2 3,113,142,GUIInputTextf
GUIOuttextwin2 3,113,152,GUIInputTextg
add byte[GUItextcolor],15
GUIOuttextwin2 3,5,101,GUIInputText3
GUIOuttextwin2 3,5,111,GUIInputText4
GUIOuttextwin2 3,5,121,GUIInputText5
GUIOuttextwin2 3,5,131,GUIInputText6
GUIOuttextwin2 3,5,141,GUIInputTextD
GUIOuttextwin2 3,5,151,GUIInputTextE
GUIOuttextwin2 3,75,101,GUIInputText7
GUIOuttextwin2 3,75,111,GUIInputText8
GUIOuttextwin2 3,75,121,GUIInputText9
GUIOuttextwin2 3,75,131,GUIInputTextA
GUIOuttextwin2 3,75,141,GUIInputTextB
GUIOuttextwin2 3,75,151,GUIInputTextC
%ifdef __MSDOS__
GUIOuttextwin2 3,19,166,GUIInputTextW
%endif
GUIOuttextwin2 3,155,101,GUIInputText7
GUIOuttextwin2 3,155,111,GUIInputText8
GUIOuttextwin2 3,155,121,GUIInputTextC
GUIOuttextwin2 3,115,101,GUIInputText9
GUIOuttextwin2 3,115,111,GUIInputTextA
GUIOuttextwin2 3,115,121,GUIInputTextB
GUIOuttextwin2 3,152,141,GUIInputTextd
GUIOuttextwin2 3,152,151,GUIInputTexte
GUIOuttextwin2 3,112,141,GUIInputTextf
GUIOuttextwin2 3,112,151,GUIInputTextg
%ifdef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
xor eax,eax
mov al,[cplayernum]
cmp byte[pl1p209+eax],0
je .nocheckbox2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox2
GUIDisplayIconWin 3,5,162,[GUITemp]
%endif
DrawGUIButton 3,125,34,155,45,GUIInputTextV,14,0,0
; cmp byte[OSPort],3
; je near .win32
%ifdef __MSDOS__
DrawGUIButton 3,125,50,185,61,GUIInputTexta,15,0,0
%endif
.win32
DrawGUIButton 3,125,66,179,77,GUIInputTexta2,15,0,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
mov al,[cplayernum]
add al,'1'
mov [GUIInputText1+8],al
GUIOuttextwin2 3,6,16,GUIInputText1
GUIOuttextwin2 3,6,26,GUIInputText2
GUIOuttextwin2 3,6,92,GUIInputTextP
GUIOuttextwin2 3,116,92,GUIInputTextb
GUIOuttextwin2 3,116,131,GUIInputTextc
xor eax,eax
mov al,[cplayernum]
mov ebx,[GUIInputRefP+eax*4]
mov al,[ebx]
mov al,[GUIInputRefB+eax]
mov ebx,eax
shl eax,4
add eax,ebx
add eax,GUIInputNames
mov dword[GUITemp],eax
GUIOuttextwin2 3,7+24,83,[GUITemp]
GUIOuttextwin2 3,7,83,GUIInputTextT
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 3,5,15,GUIInputText1
GUIOuttextwin2 3,5,25,GUIInputText2
GUIOuttextwin2 3,5,91,GUIInputTextP
GUIOuttextwin2 3,115,91,GUIInputTextb
GUIOuttextwin2 3,115,130,GUIInputTextc
GUIOuttextwin2 3,6+24,82,[GUITemp]
GUIOuttextwin2 3,6,82,GUIInputTextT
DrawGUIWinBox 3,5,34,107,77,167
mov ebx,[GUIcurrentinputcursloc]
sub ebx,[GUIcurrentinputviewloc]
mov eax,ebx
lea ebx,[ebx*8]
add ebx,36
DrawGUIWinBox2 3,5,107,7,224
mov edi,pl1selk
cmp byte[cplayernum],1
jne .nopl2
mov edi,pl2selk
.nopl2
cmp byte[cplayernum],2
jne .nopl3
mov edi,pl3selk
.nopl3
cmp byte[cplayernum],3
jne .nopl4
mov edi,pl4selk
.nopl4
cmp byte[cplayernum],4
jne .nopl5
mov edi,pl5selk
.nopl5
GUIInputDispKey 45,150 ; Select
GUIInputDispKey 45,140 ; Start
GUIInputDispKey 45,100 ; Up
GUIInputDispKey 45,110 ; Down
GUIInputDispKey 45,120 ; Left
GUIInputDispKey 45,130 ; Right
GUIInputDispKey 85,120 ; X
GUIInputDispKey 85,100 ; A
GUIInputDispKey 85,140 ; L
GUIInputDispKey 85,130 ; Y
GUIInputDispKey 85,110 ; B
GUIInputDispKey 85,150 ; R
mov edi,pl1Atk
cmp byte[cplayernum],1
jne .nopl2t
mov edi,pl2Atk
.nopl2t
cmp byte[cplayernum],2
jne .nopl3t
mov edi,pl3Atk
.nopl3t
cmp byte[cplayernum],3
jne .nopl4t
mov edi,pl4Atk
.nopl4t
cmp byte[cplayernum],4
jne .nopl5t
mov edi,pl5Atk
.nopl5t
GUIInputDispKey 165,100 ; A Turbo
GUIInputDispKey 165,110 ; B Turbo
GUIInputDispKey 125,100 ; X Turbo
GUIInputDispKey 125,110 ; Y Turbo
mov edi,pl1Ltk
cmp byte[cplayernum],1
jne .nopl2tl
mov edi,pl2Ltk
.nopl2tl
cmp byte[cplayernum],2
jne .nopl3tl
mov edi,pl3Ltk
.nopl3tl
cmp byte[cplayernum],3
jne .nopl4tl
mov edi,pl4Ltk
.nopl4tl
cmp byte[cplayernum],4
jne .nopl5tl
mov edi,pl5Ltk
.nopl5tl
GUIInputDispKey 125,120 ; L Turbo
GUIInputDispKey 165,120 ; R Turbo
mov edi,pl1ULk
cmp byte[cplayernum],1
jne .nopl2tb
mov edi,pl2ULk
.nopl2tb
cmp byte[cplayernum],2
jne .nopl3tb
mov edi,pl3ULk
.nopl3tb
cmp byte[cplayernum],3
jne .nopl4tb
mov edi,pl4ULk
.nopl4tb
cmp byte[cplayernum],4
jne .nopl5tb
mov edi,pl5ULk
.nopl5tb
GUIInputDispKey 165,140 ; Up-Left
GUIInputDispKey 165,150 ; Up-Right
GUIInputDispKey 125,140 ; Down-Left
GUIInputDispKey 125,150 ; Down-Right
mov byte[GUItextcolor],223
mov eax,[GUIcurrentinputviewloc]
shl eax,4
add eax,[GUIcurrentinputviewloc]
add eax,GUIInputNames
mov dword[GUITemp],eax
GUIOuttextwin2 3,11,38,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,11,38+8,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,11,38+8*2,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,11,38+8*3,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,11,38+8*4,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],222
.zero5
mov eax,[GUIcurrentinputviewloc]
shl eax,4
add eax,[GUIcurrentinputviewloc]
add eax,GUIInputNames
mov dword[GUITemp],eax
GUIOuttextwin2 3,10,37,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,10,37+8,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,10,37+8*2,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,10,37+8*3,[GUITemp]
add dword[GUITemp],17
GUIOuttextwin2 3,10,37+8*4,[GUITemp]
DrawSlideBarWin 3,109,42,[GUIcurrentinputviewloc],[NumInputDevices],5,28,GUIIStA
cmp byte[GUICHold],9
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin 3,109,34,GUIIconDataUpArrow
cmp byte[GUICHold],9
jne .noholda2
sub byte[GUIWincoladd],3
.noholda2
cmp byte[GUICHold],10
jne .noholdb
add byte[GUIWincoladd],3
.noholdb
GUIDisplayIconWin 3,109,70,GUIIconDataDownArrow
cmp byte[GUICHold],10
jne .noholdb2
sub byte[GUIWincoladd],3
.noholdb2
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 3,5,33,107,33,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 3,4,34,3,77,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 3,5,78,107,78,dl
ret
SECTION .data
GUIInputRefF db 0,1,2,3,5,18,6,7,8,9,10,11,14,15,16,17
GUIInputRefB db 0,1,2,3,3,4,6,7,8,9,10,11,11,11,12,13,14,15,5
GUIInputRefP dd pl1contrl,pl2contrl,pl3contrl,pl4contrl,pl5contrl
GUIInputText1 db 'PLAYER # CONTROL :',0
GUIInputText2 db 'DEVICE :',0
GUIInputText3 db ' UP',0
GUIInputText4 db ' DOWN',0
GUIInputText5 db ' LEFT',0
GUIInputText6 db ' RIGHT',0
GUIInputText7 db 'A',0
GUIInputText8 db 'B',0
GUIInputText9 db 'X',0
GUIInputTextA db 'Y',0
GUIInputTextB db 'L',0
GUIInputTextC db 'R',0
GUIInputTextD db ' START',0
GUIInputTextE db 'SELECT',0
GUIInputTextP db 'KEYS :',0
GUIInputTextQ dd 0
GUIInputTextT db 'CDV:',0
GUIInputTextV db 'SET',0
GUIInputTextW db 'USE JOYSTICK PORT 209H',0
GUIInputTexta db 'CALIBRATE',0
GUIInputTexta2 db 'SET KEYS',0
GUIInputTextb db 'TURBO :',0
GUIInputTextc db 'DIAGONALS :',0
GUIInputTextd db 'UL',0
GUIInputTexte db 'UR',0
GUIInputTextf db 'DL',0
GUIInputTextg db 'DR',0
SECTION .bss
GUIIStA resd 3
GUIcurrentinputviewloc resd 1
GUIcurrentinputcursloc resd 1
SECTION .text
DisplayGUIOption:
; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engine/Save Confirm
GUIDrawWindowBox 4,GUIOptionDisp
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
mov dword[GUITemp],GUIOptionText1
cmp byte[frameskip],0
jne .noauto
mov dword[GUITemp],GUIOptionText3
.noauto
GUIOuttextwin2 4,6,16,[GUITemp]
GUIOuttextwin2u 4,26,31,GUIOptionText2,0
GUIOuttextwin2u 4,26,41,GUIOptionText4,0
GUIOuttextwin2u 4,26,51,GUIOptionText5,2
GUIOuttextwin2u 4,26,61,GUIOptionText6,0
GUIOuttextwin2u 4,26,71,GUIOptionText7,0
%ifdef __MSDOS__
GUIOuttextwin2u 4,26,81,GUIOptionTextA,0
%endif
%ifdef __WIN32__
GUIOuttextwin2u 4,26,81,GUIOptionTextAb,0
%endif
GUIOuttextwin2u 4,26,91,GUIOptionTextB,0
GUIOuttextwin2u 4,26,101,GUIOptionTextC,2
GUIOuttextwin2u 4,26,111,GUIOptionTextD,12
GUIOuttextwin2u 4,26,121,GUIOptionTextE,2
GUIOuttextwin2u 4,26,131,GUIOptionTextF,1
GUIOuttextwin2u 4,26,141,GUIOptionTextG,0
GUIOuttextwin2u 4,26,151,GUIOptionTextH,9
GUIOuttextwin2u 4,26,161,GUIOptionTextI,15
GUIOuttextwin2u 4,26,171,GUIOptionTextJ,0
GUIOuttextwin2u 4,26,181,GUIOptionTextK,1
%ifdef __WIN32__
GUIOuttextwin2u 4,26,191,GUIOptionTextL,1
%endif
add byte[GUItextcolor],15
GUIOuttextwin2 4,5,15,[GUITemp]
GUIOuttextwin2 4,25,30,GUIOptionText2
GUIOuttextwin2 4,25,40,GUIOptionText4
GUIOuttextwin2 4,25,50,GUIOptionText5
GUIOuttextwin2 4,25,60,GUIOptionText6
GUIOuttextwin2 4,25,70,GUIOptionText7
%ifdef __MSDOS__
GUIOuttextwin2 4,25,80,GUIOptionTextA
%endif
%ifdef __WIN32__
GUIOuttextwin2 4,25,80,GUIOptionTextAb
%endif
GUIOuttextwin2 4,25,90,GUIOptionTextB
GUIOuttextwin2 4,25,100,GUIOptionTextC
GUIOuttextwin2 4,25,120,GUIOptionTextE
GUIOuttextwin2 4,25,110,GUIOptionTextD
GUIOuttextwin2 4,25,130,GUIOptionTextF
GUIOuttextwin2 4,25,140,GUIOptionTextG
GUIOuttextwin2 4,25,150,GUIOptionTextH
GUIOuttextwin2 4,25,160,GUIOptionTextI
GUIOuttextwin2 4,25,170,GUIOptionTextJ
GUIOuttextwin2 4,25,180,GUIOptionTextK
%ifdef __WIN32__
GUIOuttextwin2 4,25,190,GUIOptionTextL
%endif
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[frameskip],0
jne .nocheckbox
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox
GUIDisplayIconWin 4,11,26,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[newengen],0
je .nocheckbox1
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1
GUIDisplayIconWin 4,11,36,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[AutoIncSaveSlot],0
je .nocheckbox2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox2
GUIDisplayIconWin 4,11,46,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[MMXSupport],1
jne .nocheckbox3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox3
GUIDisplayIconWin 4,11,56,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[pl12s34],0
je .nocheckbox4
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox4
GUIDisplayIconWin 4,11,66,[GUITemp]
%ifdef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SidewinderFix],0
je .nocheckbox5
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox5
GUIDisplayIconWin 4,11,76,[GUITemp]
%endif
%ifdef __WIN32__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[HighPriority],0
je .nocheckbox5
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox5
GUIDisplayIconWin 4,11,76,[GUITemp]
%endif
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[FPSAtStart],0
je .nocheckbox6
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox6
GUIDisplayIconWin 4,11,86,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[Turbo30hz],0
je .nocheckbox7
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox7
GUIDisplayIconWin 4,11,96,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[TimerEnable],0
je .nocheckbox8
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox8
GUIDisplayIconWin 4,11,106,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[FastFwdToggle],0
je .nocheckbox9
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox9
GUIDisplayIconWin 4,11,116,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SRAMSave5Sec],0
je .nocheckbox10
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox10
GUIDisplayIconWin 4,11,126,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[OldGfxMode2],0
je .nocheckbox11
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox11
GUIDisplayIconWin 4,11,136,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[LatestSave],0
je .nocheckbox12
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox12
GUIDisplayIconWin 4,11,146,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[AutoState],0
je .nocheckbox13
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox13
GUIDisplayIconWin 4,11,156,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[DontSavePath],0
je .nocheckbox14
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox14
GUIDisplayIconWin 4,11,166,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SmallMsgText],0
je .nocheckbox15
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox15
GUIDisplayIconWin 4,11,176,[GUITemp]
%ifdef __WIN32__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[DisableScreenSaver],0
je .nocheckbox16
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox16
GUIDisplayIconWin 4,11,186,[GUITemp]
%endif
cmp byte[frameskip],0
je near .auto
DrawGUIWinBox 4,75,13,93,21,167
mov al,[frameskip]
add al,47
mov [GUIOptionText8],al
mov byte[GUItextcolor],223
GUIOuttextwin2 4,85,16,GUIOptionText8
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
GUIOuttextwin2 4,84,15,GUIOptionText8
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero6
mov byte[GUItextcolor],211
.zero6
DrawGUIButton 4,97,12,105,22,GUIOptionText9,12,-2,0
DrawGUIButton 4,108,12,116,22,GUIOptionText10,13,-2,0
ret
.auto
DrawGUIWinBox 4,96,13,114,21,167
mov al,[maxskip]
add al,48
mov [GUIOptionText8],al
mov byte[GUItextcolor],223
GUIOuttextwin2 4,107,16,GUIOptionText8
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],222
.zero5
GUIOuttextwin2 4,106,15,GUIOptionText8
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero7
mov byte[GUItextcolor],211
.zero7
DrawGUIButton 4,118,12,126,22,GUIOptionText9,12,-2,0
DrawGUIButton 4,129,12,137,22,GUIOptionText10,13,-2,0
ret
SECTION .data
GUIOptionText1 db 'FRAME RATE',0
GUIOptionText2 db 'AUTO FRAME RATE',0
GUIOptionText3 db 'MAX FRAME SKIP',0
GUIOptionText4 db 'NEW GFX ENGINE',0
GUIOptionText5 db 'AUTO INCRMNT SAVE SLOT',0
GUIOptionText6 db 'MMX SUPPORT',0
GUIOptionText7 db 'USE PL3/4 AS PL1/2',0
GUIOptionTextA db 'SIDEWINDER FIX',0
GUIOptionTextAb db 'HIGH PRIORITY MODE',0
GUIOptionTextB db 'FPS AT PROGRAM START',0
GUIOptionTextC db 'USE 30HZ FOR TURBO',0
GUIOptionTextD db 'ENABLE GAME CLOCK',0
GUIOptionTextE db 'TOGGLED FAST FWD/SLWDWN',0
GUIOptionTextF db 'SRAM CHECK+SAVE',0
GUIOptionTextG db 'OLD GFX MODE 2',0
GUIOptionTextH db 'START AT LATEST SAVE',0
GUIOptionTextI db 'AUTO STATE SAVE/LOAD',0
GUIOptionTextJ db 'DON',39,'T SAVE CUR PATH',0
GUIOptionTextK db 'USE SMALL MESSAGE TEXT',0
GUIOptionTextL db 'DISABLE SCREENSAVER',0
GUIOptionText8 db '-',0
GUIOptionText9 db '+',0
GUIOptionText10 db '-',0
SECTION .text
DisplayGUIVideo:
cmp byte[TripBufAvail],0
jne .notexttb
mov byte[Triplebufen],0
.notexttb
cmp byte[MMXSupport],1
jne .2xSaIdis
cmp byte[newgfx16b],0
je .2xSaIdis
jmp .no2xSaIdis
.2xSaIdis
mov byte[En2xSaI],0
mov byte[hqFilter],0
.no2xSaIdis
cmp byte[En2xSaI],0
je .no2xsaidis
mov byte[Triplebufen],0
.no2xsaidis
cmp byte[En2xSaI],0
je .no2xsaien
mov byte[hqFilter],0
mov byte[scanlines],0
mov byte[antienab],0
.no2xsaien
cmp byte[hqFilter],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
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
; cmp byte[OSPort],3
; jne near .nowin32pt2
%ifndef __MSDOS__
GUIOuttextwin2 5,12,76,GUIVideoTextw0
GUIOuttextwin2 5,12,83,GUIVideoTextw1
GUIOuttextwin2 5,12,90,GUIVideoTextw2
GUIOuttextwin2 5,12,97,GUIVideoTextw3
%endif
;.nowin32pt2
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISLVID+eax],0
je near .notext2
GUIOuttextwin2 5,13,111,GUIVideoTextb
GUIOuttextwin2u 5,36,119,GUIVideoTexta,0
.notext2
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHSVID+eax],0
je near .notexta
GUIOuttextwin2 5,13,111,GUIVideoTextb
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
je near .notextb
GUIOuttextwin2u 5,26,138,GUIVideoTextc,1
GUIOuttextwin2u 5,26,148,GUIVideoTextd,6
GUIOuttextwin2u 5,26,158,GUIVideoTextd2,0
.notextb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUII2VID+eax],0
je near .notextb2
GUIOuttextwin2u 5,26,168,GUIVideoText3,0
.notextb2
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIBIFIL+eax],0
je near .notextbf2
GUIOuttextwin2u 5,26,168,GUIVideoTextbf,0
.notextbf2
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIINVID+eax],0
je .notext3
GUIOuttextwin2u 5,26,83,GUIVideoText3,0
.notext3
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIEAVID+eax],0
je .notext4
GUIOuttextwin2u 5,26,83,GUIVideoText4,1
.notext4
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0
je near .notext5
cmp byte[GUIWSVID+eax],0
je .notext4a
GUIOuttextwin2u 5,26,93,GUIVideoText5b,1
jmp .notext5
.notext4a
GUIOuttextwin2u 5,26,93,GUIVideoText5,1
.notext5
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISSVID+eax],0
je .notext6
GUIOuttextwin2u 5,26,103,GUIVideoText6,1
.notext6
xor eax,eax
mov al,[cvidmode]
cmp byte[TripBufAvail],0
je near .notext7
cmp byte[GUITBVID+eax],0
je .notext7
GUIOuttextwin2u 5,26,168,GUIVideoText7,0
.notext7
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIM7VID+eax],0
je .notext8
cmp byte[newengen],0
je .notext8
GUIOuttextwin2u 5,26,178,GUIVideoText8b,0
.notext8
xor eax,eax
mov al,[cvidmode]
cmp byte[GUI2xVID+eax],0
je near .notext11a
GUIOuttextwin2u 5,130,158,GUIVideoTextscale2x,1
.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
mov al,[cvidmode]
cmp byte[GUIHQ3X+eax],0
je near .notexthq3xa
GUIOuttextwin2u 5,130,168,GUIVideoTexthq3x,1
.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
%ifndef __LINUX__
GUIOuttextwin2u 5,130,188,GUIVideoText9,0
%endif
add byte[GUItextcolor],15
; cmp byte[OSPort],3
; jne near .nowin32pt
%ifndef __MSDOS__
GUIOuttextwin2 5,11,75,GUIVideoTextw0
GUIOuttextwin2 5,11,82,GUIVideoTextw1
GUIOuttextwin2 5,11,89,GUIVideoTextw2
GUIOuttextwin2 5,11,96,GUIVideoTextw3
%endif
;.nowin32pt
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISLVID+eax],0
je .notext2b
GUIOuttextwin2 5,12,110,GUIVideoTextb
GUIOuttextwin2 5,35,118,GUIVideoTexta
.notext2b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHSVID+eax],0
je near .notextab
GUIOuttextwin2 5,12,110,GUIVideoTextb
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
je near .notextbb
GUIOuttextwin2 5,25,137,GUIVideoTextc
GUIOuttextwin2 5,25,147,GUIVideoTextd
GUIOuttextwin2 5,25,157,GUIVideoTextd2
.notextbb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUII2VID+eax],0
je near .notextb2b
GUIOuttextwin2 5,25,167,GUIVideoText3
.notextb2b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIBIFIL+eax],0
je near .notextb2bf
GUIOuttextwin2 5,25,167,GUIVideoTextbf
.notextb2bf
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIINVID+eax],0
je .notext3b
GUIOuttextwin2 5,25,82,GUIVideoText3
.notext3b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIEAVID+eax],0
je .notext4b
GUIOuttextwin2 5,25,82,GUIVideoText4
.notext4b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0
je near .notext5b
cmp byte[GUIWSVID+eax],0
je .notext4ba
GUIOuttextwin2 5,25,92,GUIVideoText5b
jmp .notext5b
.notext4ba
GUIOuttextwin2 5,25,92,GUIVideoText5
.notext5b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISSVID+eax],0
je .notext6b
GUIOuttextwin2 5,25,102,GUIVideoText6
.notext6b
xor eax,eax
mov al,[cvidmode]
cmp byte[TripBufAvail],0
je near .notext7b
cmp byte[GUITBVID+eax],0
je .notext7b
GUIOuttextwin2 5,25,167,GUIVideoText7
.notext7b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIM7VID+eax],0
je .notext8b
cmp byte[newengen],0
je .notext8b
GUIOuttextwin2 5,25,177,GUIVideoText8b
.notext8b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUI2xVID+eax],0
je near .notext11b
GUIOuttextwin2 5,129,157,GUIVideoTextscale2x
.notext11b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ2X+eax],0
je near .notexthq2xb
GUIOuttextwin2 5,129,167,GUIVideoTexthq2x
.notexthq2xb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ3X+eax],0
je near .notexthq3xb
GUIOuttextwin2 5,129,167,GUIVideoTexthq3x
.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
%ifndef __LINUX__
GUIOuttextwin2 5,129,187,GUIVideoText9
%endif
DrawGUIButton 5,128,60,164,71,GUIVideoText8,4,0,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 5,6,16,GUIVideoText1
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 5,5,15,GUIVideoText1
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISLVID+eax],0
je near .nocheckboxb
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[scanlines],1
jne .nocheckbox
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox
GUIDisplayIconWin 5,21,114,[GUITemp]
.nocheckboxb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHSVID+eax],0
je .nocheckboxw
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[scanlines],3
jne .nocheckboxv
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxv
GUIDisplayIconWin 5,61,114,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[scanlines],2
jne .nocheckboxv2
mov dword[GUITemp],GUIIconDataCheckBoxC
.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
je near .nocheckboxx
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[En2xSaI],1
jne .nocheckboxx2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxx2
GUIDisplayIconWin 5,11,133,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[En2xSaI],2
jne .nocheckboxx3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxx3
GUIDisplayIconWin 5,11,143,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[En2xSaI],3
jne .nocheckboxx4
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxx4
GUIDisplayIconWin 5,11,153,[GUITemp]
.nocheckboxx
xor eax,eax
mov al,[cvidmode]
cmp byte[GUII2VID+eax],0
je near .nocheckboxi2
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[antienab],0
je .nocheckbox1i2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1i2
GUIDisplayIconWin 5,11,163,[GUITemp]
.nocheckboxi2
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIBIFIL+eax],0
je near .nocheckboxbf
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[BilinearFilter],0
je .nocheckbox1bf
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1bf
GUIDisplayIconWin 5,11,163,[GUITemp]
.nocheckboxbf
xor eax,eax
mov al,[cvidmode]
cmp byte[GUITBVID+eax],0
je .nocheckboxtbb
cmp byte[TripBufAvail],0
je near .nocheckboxtbb
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[Triplebufen],1
jne .nocheckboxtb
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxtb
GUIDisplayIconWin 5,11,163,[GUITemp]
.nocheckboxtbb
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIM7VID+eax],0
je near .nocheckboxm72
cmp byte[newengen],0
je near .nocheckboxm72
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[Mode7HiRes16b],0
je .nocheckbox1m72
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1m72
GUIDisplayIconWin 5,11,173,[GUITemp]
.nocheckboxm72
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GrayscaleMode],0
je .nocheckboxm73
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxm73
GUIDisplayIconWin 5,11,183,[GUITemp]
%ifndef __LINUX__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[vsyncon],0
je .nocheckboxm74
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxm74
GUIDisplayIconWin 5,115,183,[GUITemp]
%endif
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIIEVID+eax],0
je .nocheckbox1b
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[antienab],0
je .nocheckbox1
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1
GUIDisplayIconWin 5,11,78,[GUITemp]
.nocheckbox1b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIFSVID+eax],0
je .nocheckbox2b
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[ScreenScale],0
je .nocheckbox2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox2
GUIDisplayIconWin 5,11,88,[GUITemp]
.nocheckbox2b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUISSVID+eax],0
je .nocheckbox3b
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[smallscreenon],0
je .nocheckbox3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox3
GUIDisplayIconWin 5,11,98,[GUITemp]
.nocheckbox3b
xor eax,eax
mov al,[cvidmode]
cmp byte[GUI2xVID+eax],0
je near .nocheckbox2scale2x
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[scale2xFilter],0
je .nocheckbox1scale2x
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1scale2x
GUIDisplayIconWin 5,115,153,[GUITemp]
.nocheckbox2scale2x
xor eax,eax
mov al,[cvidmode]
cmp byte[GUIHQ2X+eax],0
jne near .checkboxhq
cmp byte[GUIHQ3X+eax],0
jne near .checkboxhq
cmp byte[GUIHQ4X+eax],0
jne near .checkboxhq
jmp .nocheckboxhq
.checkboxhq
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[hqFilter],0
je .uncheckedhq
mov dword[GUITemp],GUIIconDataCheckBoxC
.uncheckedhq
GUIDisplayIconWin 5,115,163,[GUITemp]
.nocheckboxhq
DrawGUIWinBox 5,5,26,115,69,167
DrawSlideBarWin 5,117,34,[GUIcurrentvideoviewloc],[NumVideoModes],5,28,GUIVStA
cmp byte[GUICHold],5
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin 5,117,26,GUIIconDataUpArrow
cmp byte[GUICHold],5
jne .noholdb
sub byte[GUIWincoladd],3
.noholdb
cmp byte[GUICHold],6
jne .noholdc
add byte[GUIWincoladd],3
.noholdc
GUIDisplayIconWin 5,117,62,GUIIconDataDownArrow
cmp byte[GUICHold],6
jne .noholdd
sub byte[GUIWincoladd],3
.noholdd
mov ebx,[GUIcurrentvideocursloc]
sub ebx,[GUIcurrentvideoviewloc]
lea ebx,[ebx*8]
add ebx,28
DrawGUIWinBox2 5,5,115,7,224
mov byte[GUItextcolor],223
mov eax,[GUIcurrentvideoviewloc]
mov ebx,eax
shl eax,4
add eax,ebx
add eax,ebx
add eax,GUIVideoModeNames
mov dword[GUITemp],eax
GUIOuttextwin2 5,11,30,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,11,30+8,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,11,30+8*2,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,11,30+8*3,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,11,30+8*4,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],222
.zero5
mov eax,[GUIcurrentvideoviewloc]
mov ebx,eax
shl eax,4
add eax,ebx
add eax,ebx
add eax,GUIVideoModeNames
mov dword[GUITemp],eax
GUIOuttextwin2 5,10,29,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,10,29+8,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,10,29+8*2,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,10,29+8*3,[GUITemp]
add dword[GUITemp],18
GUIOuttextwin2 5,10,29+8*4,[GUITemp]
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 5,5,25,115,25,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 5,4,26,3,69,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 5,5,70,115,70,dl
xor eax,eax
mov al,[cvidmode]
mov ebx,eax
shl eax,4
add eax,ebx
add eax,ebx
add eax,GUIVideoModeNames
mov dword[GUITemp],eax
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 5,7,196,GUIVideoTextH
GUIOuttextwin2 5,49,196,[GUITemp]
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero6
mov byte[GUItextcolor],164
.zero6
GUIOuttextwin2 5,6,195,GUIVideoTextH
GUIOuttextwin2 5,48,195,[GUITemp]
ret
SECTION .data
GUIVideoText1 db 'VIDEO MODES :',0
GUIVideoText2 db 'FULL SCANLINES',0
GUIVideoTextb db 'SCANLINES:',0
GUIVideoTexta db 'FULL',0
GUIVideoTexta2 db '50%',0
GUIVideoTexta3 db '25%',0
GUIVideoTextc db '2XSAI ENGINE',0
GUIVideoTextd db 'SUPER EAGLE',0
GUIVideoTextd2 db 'SUPER 2XSAI',0
GUIVideoTextbf db 'BILINEAR FILTER',0
GUIVideoText3 db 'INTERPOLATION',0 ; -y
GUIVideoText4 db 'EAGLE ENGINE',0 ; -y
GUIVideoTextscale2x db 'SCALE2X',0
GUIVideoTexthq2x db 'HQ2X',0
GUIVideoTexthq3x db 'HQ3X',0
GUIVideoTexthq4x db 'HQ4X',0
GUIVideoText5 db 'FULL SCREEN',0 ; -c
GUIVideoText5b db 'WIDE SCREEN',0 ; -c
GUIVideoText6 db 'SMALL SCREEN',0 ; -c
GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c
GUIVideoText8b db 'HI-RES MODE 7',0 ; -c
GUIVideoText8c db 'GRAYSCALE MODE',0 ; -c
GUIVideoText8 db 'SET',0 ; set button
GUIVideoText9 db 'VSYNC',0 ; -c
GUIVideoTextH db 'MODE : ',0
GUIVideoTextw0 db 'LEGEND:',0
GUIVideoTextw1 db ' S = SCALED TO FIT SCREEN',0
GUIVideoTextw2 db ' R = MATCHED SCREEN RATIO',0
GUIVideoTextw3 db ' D = ALLOW 2XSAI,HIRES,ETC',0
SECTION .bss
GUIVStA resd 3
GUIcurrentvideoviewloc resd 1
GUIcurrentvideocursloc resd 1
SECTION .text
DisplayGUISound:
; Enable Sound/Sampling Rate/Stereo/Sound Buffering/Volume
GUIDrawWindowBox 6,GUISoundDisp
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
; E = Enable Sound, S = Stereo Sound, B = Sound Buffering
; R = Sample Rate
GUIOuttextwin2u 6,26,26,GUISoundText1,0
GUIOuttextwin2u 6,26,35,GUISoundText3,0
; cmp byte[OSPort],3
; je near .win32b
%ifdef __MSDOS__
GUIOuttextwin2u 6,116,26,GUISoundText1b,0
GUIOuttextwin2u 6,26,44,GUISoundText2b,1
%endif
;.win32b
; GUIOuttextwin2u 6,26,106,GUISoundText4,8
GUIOuttextwin2u 6,26,116,GUISoundTextH,2
; cmp byte[OSPort],3
; je near .win32s2
GUIOuttextwin2u 6,26,126,GUISoundTextI,1
;.win32s2
GUIOuttextwin2u 6,26,136,GUISoundTextJ,6
GUIOuttextwin2u 6,26,146,GUISoundTextK,0
GUIOuttextwin2u 6,26,168,GUISoundTextQ,0
GUIOuttextwin2u 6,26,178,GUISoundTextR,0
%ifndef __MSDOS__
GUIOuttextwin2u 6,26,188,GUISoundTextS,0
%endif
GUIOuttextwin2u 6,126,168,GUISoundTextU,1
GUIOuttextwin2u 6,126,178,GUISoundTextV,1
%ifndef __MSDOS__
GUIOuttextwin2u 6,126,188,GUISoundTextW,0
%endif
add byte[GUItextcolor],15
GUIOuttextwin2 6,25,25,GUISoundText1
GUIOuttextwin2 6,25,34,GUISoundText3
; cmp byte[OSPort],3
; je near .win32c
%ifdef __MSDOS__
GUIOuttextwin2 6,115,25,GUISoundText1b
GUIOuttextwin2 6,25,43,GUISoundText2b
%endif
;.win32c
; GUIOuttextwin2 6,25,105,GUISoundText4
GUIOuttextwin2 6,25,115,GUISoundTextH
; cmp byte[OSPort],3
; je near .win32s
GUIOuttextwin2 6,25,125,GUISoundTextI
;.win32s
GUIOuttextwin2 6,25,135,GUISoundTextJ
GUIOuttextwin2 6,25,145,GUISoundTextK
GUIOuttextwin2 6,25,167,GUISoundTextQ
GUIOuttextwin2 6,25,177,GUISoundTextR
%ifndef __MSDOS__
GUIOuttextwin2 6,25,187,GUISoundTextS
%endif
GUIOuttextwin2 6,125,167,GUISoundTextU
GUIOuttextwin2 6,125,177,GUISoundTextV
%ifndef __MSDOS__
GUIOuttextwin2 6,125,187,GUISoundTextW
%endif
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 6,6,16,GUISoundText6
GUIOuttextwin2u 6,6,53,GUISoundText2,9
GUIOuttextwin2 6,6,76,GUISoundText5
GUIOuttextwin2 6,6,158,GUISoundTextP
GUIOuttextwin2 6,106,158,GUISoundTextT
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 6,5,15,GUISoundText6
GUIOuttextwin2 6,5,52,GUISoundText2
GUIOuttextwin2 6,5,75,GUISoundText5
GUIOuttextwin2 6,5,157,GUISoundTextP
GUIOuttextwin2 6,105,157,GUISoundTextT
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[cfgsoundon],0
je .nocheckbox
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox
GUIDisplayIconWin 6,11,21,[GUITemp]
%ifdef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[cfgforce8b],0
je .nocheckbox0
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox0
GUIDisplayIconWin 6,102,21,[GUITemp]
%endif
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[cfgStereoSound],0
je .nocheckbox1
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1
GUIDisplayIconWin 6,11,30,[GUITemp]
%ifdef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[RaisePitch],0
je .nocheckbox1b
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1b
; cmp byte[OSPort],3
; je near .win32
GUIDisplayIconWin 6,11,39,[GUITemp]
%endif
;.win32
; mov dword[GUITemp],GUIIconDataCheckBoxUC
; cmp byte[SoundNoiseDis],0
; je .nocheckbox2
; mov dword[GUITemp],GUIIconDataCheckBoxC
;.nocheckbox2
; GUIDisplayIconWin 6,11,101,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[RevStereo],0
je .nocheckbox3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox3
GUIDisplayIconWin 6,11,111,[GUITemp]
; cmp byte[OSPort],3
; je near .nocheckbox42
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[Surround],0
je .nocheckbox4
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox4
GUIDisplayIconWin 6,11,121,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SoundBufEn],0
je .nocheckbox5
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox5
GUIDisplayIconWin 6,11,131,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SPCDisable],0
je .nocheckbox6
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox6
GUIDisplayIconWin 6,11,141,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SoundInterpType],1
jne .nocheckbox7
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox7
GUIDisplayIconWin 6,11,163,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SoundInterpType],2
jne .nocheckbox8
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox8
GUIDisplayIconWin 6,11,173,[GUITemp]
%ifndef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SoundInterpType],3
jne .nocheckbox9
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox9
GUIDisplayIconWin 6,11,183,[GUITemp]
%endif
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[LowPassFilterType],1
jne .nocheckbox10
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox10
GUIDisplayIconWin 6,111,163,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[LowPassFilterType],2
jne .nocheckbox11
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox11
GUIDisplayIconWin 6,111,173,[GUITemp]
%ifndef __MSDOS__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[LowPassFilterType],3
jne .nocheckbox12
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox12
GUIDisplayIconWin 6,111,183,[GUITemp]
%endif
DrawGUIWinBox 6,15,61,69,69,167
mov dword[GUITemp],GUISoundText7
xor eax,eax
mov al,[cfgSoundQuality]
shl eax,3
add [GUITemp],eax
mov byte[GUItextcolor],223
GUIOuttextwin2 6,23,64,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
GUIOuttextwin2 6,22,63,[GUITemp]
mov eax,dword[GUIwinposx+6*4]
mov ebx,dword[GUIwinposy+6*4]
mov ecx,eax
add eax,15
add ecx,15+100
add ebx,91
xor edx,edx
mov dl,215
sub dl,[GUIWincoladd]
DrawGUILine
inc ecx
inc eax
sub dl,13
DrawGUILine
xor eax,eax
mov al,[MusicRelVol]
mov dword[GUITemp],11
add [GUITemp],eax
GUIDisplayIconWin 6,[GUITemp],87,GUIIconDataSlideBar
mov dword[GUISoundTextD],' '
mov byte[GUISoundTextD+3],'%'
mov esi,GUISoundTextD+2
xor eax,eax
mov al,[MusicRelVol]
mov ebx,10
div bl
add ah,48
mov [esi],ah
cmp al,0
je .nomore
dec esi
xor ah,ah
div bl
add ah,48
mov [esi],ah
cmp al,0
je .nomore
dec esi
xor ah,ah
div bl
add ah,48
mov [esi],ah
.nomore
mov [GUITemp],esi
mov byte[GUItextcolor],223
GUIOuttextwin2 6,119,89,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],222
.zero5
GUIOuttextwin2 6,118,88,[GUITemp]
ret
SECTION .data
GUISoundText1 db 'ENABLE SOUND',0
GUISoundText1b db 'FORCE 8-BIT',0
GUISoundText2 db 'SAMPLING RATE :',0
GUISoundText2b db 'RAISE PITCH LEVEL',0
GUISoundText3 db 'STEREO SOUND',0
GUISoundText4 db '',0
GUISoundText5 db 'VOLUME LEVEL :',0
GUISoundText6 db 'SOUND SWITCHES :',0
GUISoundText7 db ' 8000HZ',0
GUISoundText8 db '11025HZ',0
GUISoundText9 db '22050HZ',0
GUISoundTextA db '44100HZ',0
GUISoundTextB db '16000HZ',0
GUISoundTextC db '32000HZ',0
GUISoundTextCb db '48000HZ',0
GUISoundTextD db '---%',0
GUISoundTextH db 'REVERSE STEREO',0
GUISoundTextI db 'SURROUND SOUND',0
GUISoundTextJ db 'SOUND BUFFERING',0
GUISoundTextK db 'DISABLE SPC EMULATION',0
GUISoundTextP db 'INTERPOLATION :',0
GUISoundTextQ db 'GAUSSIAN',0
GUISoundTextR db 'CUBIC SPLINE',0
GUISoundTextS db '8-POINT',0
GUISoundTextT db 'LOWPASS :',0
GUISoundTextU db 'SIMPLE',0
GUISoundTextV db 'DYNAMIC',0
GUISoundTextW db 'HI QUALITY',0
SECTION .text
DisplayGUICheatConv:
mov eax,[ccheatnpos]
add eax,4
xor ebx,ebx
mov ecx,3
mov edx,GUICheatTextB
.loop
mov bl,[eax]
and bl,0Fh
mov bl,[GUICheatTextC+ebx]
mov [edx+1],bl
mov bl,[eax]
and bl,0F0h
shr bl,4
mov bl,[GUICheatTextC+ebx]
mov [edx],bl
add edx,2
dec eax
dec ecx
jnz .loop
mov eax,[ccheatnpos]
inc eax
mov edx,GUICheatTextB+7
mov bl,[eax]
and bl,0Fh
mov bl,[GUICheatTextC+ebx]
mov [edx+1],bl
mov bl,[eax]
and bl,0F0h
shr bl,4
mov bl,[GUICheatTextC+ebx]
mov [edx],bl
mov eax,[ccheatnpos]
add eax,5
mov edx,GUICheatTextB+10
mov bl,[eax]
and bl,0Fh
mov bl,[GUICheatTextC+ebx]
mov [edx+1],bl
mov bl,[eax]
and bl,0F0h
shr bl,4
mov bl,[GUICheatTextC+ebx]
mov [edx],bl
mov eax,[ccheatnpos]
test byte[eax-28],80h
jnz .src
test byte[eax],04h
jz .on
mov byte[GUICheatTextB+13],'O'
mov byte[GUICheatTextB+14],'F'
mov byte[GUICheatTextB+15],'F'
jmp .off
.on
test byte[eax],80h
jnz .repl
mov byte[GUICheatTextB+13],'O'
mov byte[GUICheatTextB+14],'N'
mov byte[GUICheatTextB+15],' '
jmp .off
.repl
mov byte[GUICheatTextB+13],'R'
mov byte[GUICheatTextB+14],'P'
mov byte[GUICheatTextB+15],'L'
jmp .off
.src
mov byte[GUICheatTextB+13],'S'
mov byte[GUICheatTextB+14],'R'
mov byte[GUICheatTextB+15],'C'
.off
mov ecx,20
add eax,8
mov edx,GUICheatTextB+17
.loop2
mov bl,[eax]
mov [edx],bl
inc eax
inc edx
dec ecx
jnz .loop2
ret
%macro GUIOuttextwin2cheat 2
test dword[ccheatnleft],80000000h
jnz %%skip
call DisplayGUICheatConv
GUIOuttextwin2 7,%1,%2,GUICheatTextB
add dword[ccheatnpos],28
dec dword[ccheatnleft]
%%skip
%endmacro
DisplayGUICheat:
GUIDrawWindowBox 7,GUICheatDisp
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
GUIOuttextwin2 7,6,132,GUICheatText1
GUIOuttextwin2 7,6,143,GUICheatText2
GUIOuttextwin2 7,6,13,GUICheatText3
GUIOuttextwin2 7,11,154,GUICheatTextD
GUIOuttextwin2 7,11,164,GUICheatTextE
GUIOuttextwin2 7,11,172,GUICheatTextF
GUIOuttextwin2 7,11,180,GUICheatTextG
GUIOuttextwin2 7,26,191,GUICheatTextJ
add byte[GUItextcolor],15
GUIOuttextwin2 7,5,131,GUICheatText1
GUIOuttextwin2 7,5,142,GUICheatText2
GUIOuttextwin2 7,5,12,GUICheatText3
GUIOuttextwin2 7,10,153,GUICheatTextD
GUIOuttextwin2 7,10,163,GUICheatTextE
GUIOuttextwin2 7,10,171,GUICheatTextF
GUIOuttextwin2 7,10,179,GUICheatTextG
GUIOuttextwin2 7,25,190,GUICheatTextJ
DrawGUIWinBox 7,5,20,229,108,167
DrawGUIButton 7,5,113,47,124,GUICheatText4,5,0,0
DrawGUIButton 7,52,113,94,124,GUICheatText5,6,0,0
DrawGUIButton 7,99,113,141,124,GUICheatText7,7,0,0
DrawGUIButton 7,146,113,188,124,GUICheatText8,8,0,0
DrawGUIButton 7,212,134,236,145,GUICheatText6,9,0,0
DrawGUIButton 7,193,113,235,124,GUICheatTextI,33,0,0
cmp dword[GUIcurrentcheatwin],0
jne near .nowinbox
mov ebx,[GUIcurrentcheatcursloc]
sub ebx,[GUIcurrentcheatviewloc]
mov eax,ebx
lea ebx,[ebx*8]
sub ebx,eax
add ebx,22
DrawGUIWinBox2 7,5,229,7,224
.nowinbox
mov byte[GUItextcolor],223
mov dword[ccheatnpos],cheatdata
mov eax,[NumCheats]
sub eax,[GUIcurrentcheatviewloc]
dec eax
mov dword[ccheatnleft],eax
mov eax,[GUIcurrentcheatviewloc]
mov ebx,eax
shl eax,5
sub eax,ebx
sub eax,ebx
sub eax,ebx
sub eax,ebx
add [ccheatnpos],eax
GUIOuttextwin2cheat 12,24
GUIOuttextwin2cheat 12,24+7
GUIOuttextwin2cheat 12,24+7*2
GUIOuttextwin2cheat 12,24+7*3
GUIOuttextwin2cheat 12,24+7*4
GUIOuttextwin2cheat 12,24+7*5
GUIOuttextwin2cheat 12,24+7*6
GUIOuttextwin2cheat 12,24+7*7
GUIOuttextwin2cheat 12,24+7*8
GUIOuttextwin2cheat 12,24+7*9
GUIOuttextwin2cheat 12,24+7*10
GUIOuttextwin2cheat 12,24+7*11
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
mov dword[ccheatnpos],cheatdata
mov eax,[NumCheats]
sub eax,[GUIcurrentcheatviewloc]
dec eax
mov dword[ccheatnleft],eax
mov eax,[GUIcurrentcheatviewloc]
mov ebx,eax
shl eax,5
sub eax,ebx
sub eax,ebx
sub eax,ebx
sub eax,ebx
add [ccheatnpos],eax
GUIOuttextwin2cheat 11,23
GUIOuttextwin2cheat 11,23+7
GUIOuttextwin2cheat 11,23+7*2
GUIOuttextwin2cheat 11,23+7*3
GUIOuttextwin2cheat 11,23+7*4
GUIOuttextwin2cheat 11,23+7*5
GUIOuttextwin2cheat 11,23+7*6
GUIOuttextwin2cheat 11,23+7*7
GUIOuttextwin2cheat 11,23+7*8
GUIOuttextwin2cheat 11,23+7*9
GUIOuttextwin2cheat 11,23+7*10
GUIOuttextwin2cheat 11,23+7*11
DrawSlideBarWin 7,231,28,[GUIcurrentcheatviewloc],[NumCheats],12,73,GUICStA
cmp byte[GUICHold],7
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin 7,231,20,GUIIconDataUpArrow
cmp byte[GUICHold],7
jne .noholda2
sub byte[GUIWincoladd],3
.noholda2
cmp byte[GUICHold],8
jne .noholdb
add byte[GUIWincoladd],3
.noholdb
GUIDisplayIconWin 7,231,101,GUIIconDataDownArrow
cmp byte[GUICHold],8
jne .noholdb2
sub byte[GUIWincoladd],3
.noholdb2
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 7,5,19,229,19,dl
DrawGUIWinBox 7,82,128,172,128,dl
DrawGUIWinBox 7,82,139,196,139,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 7,4,20,3,108,dl
DrawGUIWinBox 7,81,129,80,136,dl
DrawGUIWinBox 7,81,140,80,147,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 7,5,109,229,109,dl
DrawGUIWinBox 7,82,137,172,137,dl
DrawGUIWinBox 7,82,148,196,148,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 7,174,129,173,136,dl
DrawGUIWinBox 7,156,140,197,147,dl
; Draw boxes
mov ebx,[GUIcurrentcheatcursloc]
sub ebx,[GUIcurrentcheatviewloc]
mov eax,ebx
lea ebx,[ebx*4]
add ebx,eax
add ebx,eax
add ebx,eax
add ebx,22
mov dl,167
cmp dword[GUIcurrentcheatwin],1
jne .notopibox
mov dl,226
cmp byte[GUIWincoladd],0
je .nocoladd
inc dl
.nocoladd
.notopibox
DrawGUIWinBox 7,82,129,172,136,dl
mov dl,167
cmp dword[GUIcurrentcheatwin],2
jne .nobotibox
mov dl,226
cmp byte[GUIWincoladd],0
je .nocoladd2
inc dl
.nocoladd2
.nobotibox
DrawGUIWinBox 7,82,140,196,147,dl
mov byte[GUItextcolor],223
GUIOuttextwin2 7,84,132,GUICheatText9
GUIOuttextwin2 7,84,143,GUICheatTextA
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],222
.zero3
GUIOuttextwin2 7,83,131,GUICheatText9
GUIOuttextwin2 7,83,142,GUICheatTextA
xor eax,eax
mov al,[GUICheatPosA]
mov byte[GUICheatText9+eax],0
xor ebx,ebx
mov bl,[GUICheatPosB]
mov byte[GUICheatTextA+ebx],0
test byte[GUICCFlash],8
jnz .nound
cmp dword[GUIcurrentcheatwin],1
je .win1
cmp dword[GUIcurrentcheatwin],2
je .win2
jmp .nound
.win1
mov byte[GUICheatText9+eax],'_'
jmp .nound
.win2
mov byte[GUICheatTextA+ebx],'_'
.nound
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[AutoLoadCht],1
jne .nocheckbox
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox
GUIDisplayIconWin 7,11,186,[GUITemp]
ret
SECTION .data
GUICheatText1 db 'ENTER CODE :',0
GUICheatText2 db 'DESCRIPTION:',0
GUICheatText3 db 'ADDRESS CV PV TGL DESCRIPTION',0
GUICheatText4 db 'REMOVE',0
GUICheatText5 db 'TOGGLE',0
GUICheatText6 db 'ADD',0
GUICheatText7 db 'SAVE',0
GUICheatText8 db 'LOAD',0
GUICheatTextI db 'FIX',0
GUICheatText9 db '_',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 14 digits
GUICheatTextA db '_',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 11 digits
GUICheatTextB db '000000 00 00 OFF BLAHBLAH---',0,0,0,0,0,0,0,0,0,0,0,0
GUICheatTextC db '0123456789ABCDEF'
GUICheatTextD db 'VALID CODES : GAME GENIE, PAR, AND GF',0
GUICheatTextE db 'NOTE : YOU MAY HAVE TO RESET THE GAME',0
GUICheatTextF db ' AFTER ENTERING THE CODE. REMEMBER TO',0
GUICheatTextG db ' INSERT THE "-" FOR GAME GENIE CODES',0
GUICheatTextJ db 'AUTO-LOAD .CHT FILE AT GAME LOAD',0
SECTION .bss
GUICheatPosA resb 1
GUICheatPosB resb 1
GUICStA resd 3
GUIcurrentcheatviewloc resd 1
GUIcurrentcheatcursloc resd 1
GUIcurrentcheatwin resd 1
ccheatnpos resd 1
ccheatnleft resd 1
SECTION .text
DrawWindowSearch:
GUIDrawWindowBox 13,GUISearchDisp
ret
%macro TextWindowMacro 4
sub byte[GUItextcolor],15
GUIOuttextwin2 %1,%2+1,%3+1,%4
add byte[GUItextcolor],15
GUIOuttextwin2 %1,%2,%3,%4
%endmacro
CSRemoveFlash:
.loop
cmp byte[esi],'_'
je .flash
cmp byte[esi],0
je .notflash
inc esi
jmp .loop
.flash
mov byte[esi],0
.notflash
ret
CSAddFlash:
.loop
cmp byte[esi],'_'
je .flash
cmp byte[esi],0
je .notflash
inc esi
jmp .loop
.notflash
mov byte[esi],'_'
mov byte[esi+1],0
.flash
ret
DisplayGUISearch:
jmp .startcheat
call DrawWindowSearch
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
GUIOuttextwin2 13,6,16,GUISrcText1
GUIOuttextwin2 13,6,26,GUISrcText2
GUIOuttextwin2 13,6,36,GUISrcText3
add byte[GUItextcolor],15
GUIOuttextwin2 13,5,15,GUISrcText1
GUIOuttextwin2 13,5,25,GUISrcText2
GUIOuttextwin2 13,5,35,GUISrcText3
ret
; DrawGUIButton 13,197,30,239,41,GUICSrcText8+2,40,0,0
ret
.startcheat
cmp byte[CheatWinMode],1
je near Incheatmode
cmp byte[CheatWinMode],2
je near Cheatmodeview
cmp byte[CheatWinMode],3
je near Cheatmodeadd
mov dword[GUIwinsizex+13*4],170
mov dword[GUIwinsizey+13*4],150
call DrawWindowSearch
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 13,6,16,GUICSrcText1
GUIOuttextwin2 13,6,101,GUICSrcText8
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 13,5,15,GUICSrcText1
GUIOuttextwin2 13,5,100,GUICSrcText8
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero2
mov byte[GUItextcolor],211
.zero2
TextWindowMacro 13,25,30,GUICSrcText2
TextWindowMacro 13,25,40,GUICSrcText3
TextWindowMacro 13,25,50,GUICSrcText4
TextWindowMacro 13,25,60,GUICSrcText5
TextWindowMacro 13,25,75,GUICSrcText6
TextWindowMacro 13,25,85,GUICSrcText7
TextWindowMacro 13,25,115,GUICSrcText9
TextWindowMacro 13,25,125,GUICSrcTextA
DrawGUIButton 13,95,140,140,152,GUICSrcTextB,50,0,1
GUIDisplayButtonHole 13,11,28,byte[CheatSrcByteSize],0
GUIDisplayButtonHole 13,11,38,byte[CheatSrcByteSize],1
GUIDisplayButtonHole 13,11,48,byte[CheatSrcByteSize],2
GUIDisplayButtonHole 13,11,58,byte[CheatSrcByteSize],3
GUIDisplayButtonHole 13,11,73,byte[CheatSrcByteBase],0
GUIDisplayButtonHole 13,11,83,byte[CheatSrcByteBase],1
GUIDisplayButtonHole 13,11,113,byte[CheatSrcSearchType],0
GUIDisplayButtonHole 13,11,123,byte[CheatSrcSearchType],1
ret
Incheatmode:
mov dword[GUIwinsizex+13*4],180
mov dword[GUIwinsizey+13*4],150
call DrawWindowSearch
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero2
mov byte[GUItextcolor],211
.zero2
cmp byte[CheatSearchStatus],1
jne near CheatSearching
TextWindowMacro 13,5,20,GUICSrcTextM
TextWindowMacro 13,5,30,GUICSrcTextN
TextWindowMacro 13,5,40,GUICSrcTextO
TextWindowMacro 13,5,50,GUICSrcTextP
jmp DisplayChtSrcRes.nosearch
CheatSearching:
cmp byte[CheatSrcSearchType],1
je near CheatSearchingComp
; Exact Value Search
TextWindowMacro 13,5,20,GUICSrcTextD
DrawGUIWinBox 13,10,40,80,47,167
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 13,10,39,80,39,dl ; 0,-1,0,-1
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 13,9,40,8,47,dl ; -1,0,-2,0
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 13,10,48,80,48,dl ; 0,1,0,1
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 13,82,40,81,47,dl ; 2,0,1,0
test byte[GUICCFlash],8
jnz .nound
mov esi,CSInputDisplay
call CSRemoveFlash
.nound
mov byte[GUItextcolor],223
cmp byte[CSOverValue],1
jne .notdark
mov byte[GUItextcolor],202
.notdark
GUIOuttextwin2 13,13,42,CSInputDisplay
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
cmp byte[CSOverValue],1
jne .notdark2
mov byte[GUItextcolor],207
.notdark2
GUIOuttextwin2 13,12,41,CSInputDisplay
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero2
mov byte[GUItextcolor],211
.zero2
TextWindowMacro 13,5,65,GUICSrcTextT
mov esi,CSInputDisplay
call CSAddFlash
xor eax,eax
mov al,[CheatSrcByteSize]
mov eax,[SrcMask+eax*4]
mov esi,GUICSrcTextQ
cmp byte[CheatSrcByteBase],1
je .hex
call convertnum
jmp .dec
.hex
xor ecx,ecx
mov cl,[CheatSrcByteSize]
inc ecx
call converthex
.dec
TextWindowMacro 13,71,65,GUICSrcTextQ
jmp DisplayChtSrcRes
CheatSearchingComp:
; Comparative search
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 13,6,16,GUICSrcTextE
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],164
.zero3
GUIOuttextwin2 13,5,15,GUICSrcTextE
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero2
mov byte[GUItextcolor],211
.zero2
TextWindowMacro 13,25,35,GUICSrcTextF
TextWindowMacro 13,25,45,GUICSrcTextG
TextWindowMacro 13,25,55,GUICSrcTextH
TextWindowMacro 13,25,65,GUICSrcTextHb
GUIDisplayButtonHole 13,11,33,byte[CheatCompareValue],0
GUIDisplayButtonHole 13,11,43,byte[CheatCompareValue],1
GUIDisplayButtonHole 13,11,53,byte[CheatCompareValue],2
GUIDisplayButtonHole 13,11,63,byte[CheatCompareValue],3
jmp DisplayChtSrcRes
FindChtSrcRes:
inc edi
; Calculate search results
mov eax,dword[vidbuffer]
add eax,129600+65536*2
mov ecx,16384
xor esi,esi
xor ebx,ebx
.searchloop
mov dl,[eax]
mov dh,8
.sloop2
test dl,1
jz .notset
inc ebx
dec edi
jz .found
.notset
inc esi
shr dl,1
dec dh
jnz .sloop2
inc eax
dec ecx
jnz .searchloop
mov eax,ebx
ret
.found
mov [CSStartEntry],esi
jmp .notset
DisplayChtSrcRes:
DrawGUIButton 13,120,140,170,152,GUICSrcTextI,53,0,1
.nosearch
DrawGUIButton 13,10,140,60,152,GUICSrcTextJ,51,0,1
DrawGUIButton 13,70,140,110,152,GUICSrcTextL,52,0,1
xor edi,edi
call FindChtSrcRes
mov esi,GUICSrcTextQ
call convertnum
TextWindowMacro 13,12,125,GUICSrcTextK
TextWindowMacro 13,97,125,GUICSrcTextQ
mov dword[GUIcurrentchtsrcviewloc],0
mov dword[GUIcurrentchtsrccursloc],0
ret
Cheatmodeview:
mov byte[GUICSrcTextS+12],32
cmp byte[CheatSrcByteSize],3
jne .yesprev
cmp byte[CheatSrcByteBase],0
jne .yesprev
mov byte[GUICSrcTextS+12],0
.yesprev
mov dword[GUIwinsizex+13*4],185
mov dword[GUIwinsizey+13*4],150
call DrawWindowSearch
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
TextWindowMacro 13,10,12,GUICSrcTextS
DrawGUIWinBox 13,5,20,171,108,167
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 13,5,19,171,19,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 13,4,20,3,108,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 13,5,109,171,109,dl
mov edi,[GUIcurrentchtsrcviewloc]
call FindChtSrcRes
mov [NumCheatSrc],eax
mov dword[ccheatnpos],esi
; Display Window Contents
mov byte[GUItextcolor],223
mov eax,[NumCheatSrc]
sub eax,[GUIcurrentchtsrcviewloc]
cmp eax,12
jbe .notof
mov eax,12
.notof
mov dword[ccheatnleft],eax
mov dword[ccheatnleftb],eax
mov dword[CheatSearchYPos],24
mov dword[CheatSearchXPos],10
mov eax,[CSStartEntry]
mov [CSCurEntry],eax
cmp dword[ccheatnleft],0
je near .noentry
mov byte[CheatLooped],0
mov ebx,[GUIcurrentchtsrccursloc]
sub ebx,[GUIcurrentchtsrcviewloc]
mov [curentryleft],ebx
mov eax,ebx
lea ebx,[ebx*8]
sub ebx,eax
add ebx,22
DrawGUIWinBox2 13,5,171,7,224
.nextdisplay
cmp dword[curentryleft],0
jne .notzero
mov eax,[CSCurEntry]
mov [curentryval],eax
.notzero
dec dword[curentryleft]
mov esi,GUICSrcTextQ
mov ecx,3
mov eax,[CSCurEntry]
add eax,7E0000h
call converthex
GUIOuttextwin2 13,[CheatSearchXPos],[CheatSearchYPos],GUICSrcTextQ
mov esi,GUICSrcTextQ
mov ebx,[wramdata]
add ebx,[CSCurEntry]
mov eax,[ebx]
cmp byte[CheatSrcByteBase],0
je .dec
xor ecx,ecx
mov cl,[CheatSrcByteSize]
inc ecx
call converthex
jmp .hex
.dec
xor ebx,ebx
mov bl,[CheatSrcByteSize]
and eax,[SrcMask+ebx*4]
call convertnum
.hex
add dword[CheatSearchXPos],42
GUIOuttextwin2 13,[CheatSearchXPos],[CheatSearchYPos],GUICSrcTextQ
add dword[CheatSearchXPos],60
cmp byte[GUICSrcTextS+12],0
je near .noprevious
mov esi,GUICSrcTextQ
mov ebx,dword[vidbuffer]
add ebx,129600
add ebx,[CSCurEntry]
mov eax,[ebx]
cmp byte[CheatSrcByteBase],0
je .decb
xor ecx,ecx
mov cl,[CheatSrcByteSize]
inc ecx
call converthex
jmp .hexb
.decb
xor ebx,ebx
mov bl,[CheatSrcByteSize]
and eax,[SrcMask+ebx*4]
call convertnum
.hexb
GUIOuttextwin2 13,[CheatSearchXPos],[CheatSearchYPos],GUICSrcTextQ
.noprevious
sub dword[CheatSearchXPos],102
add dword[CheatSearchYPos],7
; Search for next entry
.nextentry
inc dword[CSCurEntry]
mov eax,[CSCurEntry]
mov ecx,eax
and ecx,7
mov edx,1
shr eax,3
shl edx,cl
add eax,dword[vidbuffer]
add eax,129600+65536*2
test byte[eax],dl
jz .nextentry
dec dword[ccheatnleft]
jnz near .nextdisplay
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
mov dword[CheatSearchYPos],23
mov dword[CheatSearchXPos],11
mov eax,[CSStartEntry]
mov [CSCurEntry],eax
mov eax,dword[ccheatnleftb]
mov dword[ccheatnleft],eax
inc byte[CheatLooped]
cmp byte[CheatLooped],2
jne near .nextdisplay
.noentry
; win#,X,Y start, %4-List Loc, %5-List size, %6-Screen size, %7-Bar Size
DrawSlideBarWin 13,173,28,[GUIcurrentchtsrcviewloc],[NumCheatSrc],12,73,GUICSStA
cmp byte[GUICHold],11
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin 13,173,20,GUIIconDataUpArrow
cmp byte[GUICHold],11
jne .noholda2
sub byte[GUIWincoladd],3
.noholda2
cmp byte[GUICHold],12
jne .noholdb
add byte[GUIWincoladd],3
.noholdb
GUIDisplayIconWin 13,173,101,GUIIconDataDownArrow
cmp byte[GUICHold],12
jne .noholdb2
sub byte[GUIWincoladd],3
.noholdb2
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],211
.zero3
DrawGUIButton 13,70,140,130,152,GUICSrcTextR,54,0,1
DrawGUIButton 13,140,140,180,152,GUICSrcTextU,55,0,1
ret
Cheatmodeadd:
mov dword[GUIwinsizex+13*4],170
mov dword[GUIwinsizey+13*4],165
call DrawWindowSearch
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],211
.zero3
TextWindowMacro 13,5,20,GUICSrcTextV
TextWindowMacro 13,5,45,GUICSrcTextW
TextWindowMacro 13,5,70,GUICSrcTextX
TextWindowMacro 13,22,143,GUICSrcTextY
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[CheatUpperByteOnly],1
jne .nocheck
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck
GUIDisplayIconWin 13,8,139,[GUITemp]
DrawGUIWinBox 13,10,30,80,37,167
DrawGUIWinBox 13,10,55,126,62,167
DrawGUIWinBox 13,10,80,80,120,167
; Draw border
mov dword[GUIWincol],148+10
cmp byte[cwindrawn],1
jne .noone2
mov dword[GUIWincol],148+5
.noone2
cmp byte[cwindrawn],0
jne .nozero2
mov dword[GUIWincol],148
.nozero2
mov dl,[GUIWincol]
DrawGUIWinBox 13,10,29,80,29,dl ; 0,-1,0,-1
DrawGUIWinBox 13,10,54,126,54,dl ; 0,-1,0,-1
DrawGUIWinBox 13,10,79,80,79,dl ; 0,-1,0,-1
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 13,9,30,8,37,dl ; -1,0,-2,0
DrawGUIWinBox 13,9,55,8,62,dl ; -1,0,-2,0
DrawGUIWinBox 13,9,80,8,120,dl ; -1,0,-2,0
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 13,10,38,80,38,dl ; 0,1,0,1
DrawGUIWinBox 13,10,63,126,63,dl ; 0,1,0,1
DrawGUIWinBox 13,10,121,80,121,dl ; 0,1,0,1
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 13,82,30,81,37,dl ; 2,0,1,0
DrawGUIWinBox 13,128,55,127,62,dl ; 2,0,1,0
DrawGUIWinBox 13,82,80,81,120,dl ; 2,0,1,0
DrawGUIButton 13,60,155,120,167,GUICSrcTextR,56,0,1
DrawGUIButton 13,130,155,160,167,GUICSrcTextU,57,0,1
TextWindowMacro 13,5,130,GUICSrcTextT
xor eax,eax
mov al,[CheatSrcByteSize]
mov eax,[SrcMask+eax*4]
mov esi,GUICSrcTextQ
cmp byte[CheatSrcByteBase],1
je .hex
call convertnum
jmp .dec
.hex
xor ecx,ecx
mov cl,[CheatSrcByteSize]
inc ecx
call converthex
.dec
TextWindowMacro 13,71,130,GUICSrcTextQ
cmp byte[CurCStextpos],0
jne near .nofirstbox
test byte[GUICCFlash],8
jnz .nound
.nofirstbox
mov esi,CSInputDisplay
call CSRemoveFlash
.nound
mov byte[GUItextcolor],223
cmp byte[CSOverValue],1
jne .notdark
mov byte[GUItextcolor],202
.notdark
GUIOuttextwin2 13,13,32,CSInputDisplay
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],222
.zero4
cmp byte[CSOverValue],1
jne .notdark2
mov byte[GUItextcolor],207
.notdark2
GUIOuttextwin2 13,12,31,CSInputDisplay
mov esi,CSInputDisplay
call CSAddFlash
cmp byte[CurCStextpos],1
jne .noundb
test byte[GUICCFlash],8
jnz .noundb
mov esi,CSDescDisplay
call CSAddFlash
.noundb
mov byte[GUItextcolor],223
GUIOuttextwin2 13,13,57,CSDescDisplay
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4b
mov byte[GUItextcolor],222
.zero4b
GUIOuttextwin2 13,12,56,CSDescDisplay
mov esi,CSDescDisplay
call CSRemoveFlash
cmp byte[CSOverValue],1
je near .nodisplay
cmp byte[CSInputDisplay],'_'
je near .nodisplay
mov dword[CheatSearchYPos],83
mov eax,[curentryval]
mov [curaddrvalcs],eax
mov eax,[CSCurValue]
mov [curvaluecs],eax
xor ecx,ecx
mov cl,[CheatSrcByteSize]
inc cl
cmp byte[CheatUpperByteOnly],0
je .cspardisploop
mov cl,1
.cspardispagain
cmp dword[curvaluecs],0FFh
jbe .cspardisploop
shr dword[curvaluecs],8
inc dword[curaddrvalcs]
jmp .cspardispagain
.cspardisploop
push ecx
mov esi,GUICSrcTextQ
mov ecx,3
mov eax,[curaddrvalcs]
add eax,7E0000h
call converthex
mov esi,GUICSrcTextQ+6
mov ecx,1
mov al,[curvaluecs]
call converthex
shr dword[curvaluecs],8
mov byte[GUItextcolor],223
inc dword[CheatSearchYPos]
GUIOuttextwin2 13,13,[CheatSearchYPos],GUICSrcTextQ
dec dword[CheatSearchYPos]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero4c
mov byte[GUItextcolor],222
.zero4c
GUIOuttextwin2 13,12,[CheatSearchYPos],GUICSrcTextQ
add dword[CheatSearchYPos],10
inc dword[curaddrvalcs]
pop ecx
dec ecx
jnz near .cspardisploop
.nodisplay
ret
;CheatSrcByteSize db 0
;CheatSrcByteBase db 0
;CheatSrcSearchType db 0
SECTION .bss
CheatWinMode resb 1
CheatSearchStatus resb 1
CheatCompareValue resd 1
NumCheatSrc resd 1
GUIcurrentchtsrcviewloc resd 1
GUIcurrentchtsrccursloc resd 1
CSStartEntry resd 1
CSCurEntry resd 1
CheatSearchXPos resd 1
CheatSearchYPos resd 1
CheatLooped resd 1
ccheatnleftb resd 1
CurCStextpos resd 1
SECTION .data
SrcMask dd 0FFh,0FFFFh,0FFFFFFh,0FFFFFFFFh
CSInputDisplay db '_',0,' ',0
CSDescDisplay db ' ',0,0
SECTION .bss
curentryval resd 1
curentryleft resd 1
curaddrvalcs resd 1
curvaluecs resd 1
GUICSStA resd 3
SECTION .data
GUISrcText1 db 'CHEAT SEARCH',0
GUISrcText2 db 'HAS NOT BEEN',0
GUISrcText3 db 'IMPLEMENTED YET',0
GUICSrcText1 db 'SELECT SIZE AND FORMAT:',0
GUICSrcText2 db '1 BYTE [0..255]',0
GUICSrcText3 db '2 BYTES [0..65535]',0
GUICSrcText4 db '3 BYTES [0..16777215]',0
GUICSrcText5 db '4 BYTES [0..4294967295]',0
GUICSrcText6 db 'DEC (BASE 10)',0
GUICSrcText7 db 'HEX (BASE 16)',0
GUICSrcText8 db 'SELECT SEARCH TYPE:',0
GUICSrcText9 db 'EXACT VALUE SEARCH',0
GUICSrcTextA db 'COMPARATIVE SEARCH',0
GUICSrcTextB db 'START',0
GUICSrcTextD db 'ENTER VALUE:',0
GUICSrcTextE db 'SELECT COMPARISON:',0
GUICSrcTextF db 'NEW VALUE IS > OLD VALUE',0
GUICSrcTextG db 'NEW VALUE IS < OLD VALUE',0
GUICSrcTextH db 'NEW VALUE IS = OLD VALUE',0
GUICSrcTextHb db 'NEW VALUE IS != OLD VALUE',0
GUICSrcTextI db 'SEARCH',0
GUICSrcTextJ db 'RESTART',0
GUICSrcTextK db '# OF RESULTS:',0
GUICSrcTextL db 'VIEW',0
GUICSrcTextQ db ' ',0
GUICSrcTextM db 'NOW RETURN TO YOUR GAME',0
GUICSrcTextN db 'AND COME BACK WHEN ',0
GUICSrcTextO db 'THE NEXT SEARCH',0
GUICSrcTextP db 'SHOULD BE PROCESSED',0
GUICSrcTextR db 'RETURN',0
GUICSrcTextS db 'ADDR VALUE PVALUE',0
GUICSrcTextT db 'MAX VALUE:',0
GUICSrcTextU db 'ADD',0
GUICSrcTextV db 'ENTER NEW VALUE:',0
GUICSrcTextW db 'ENTER CHEAT DESCRIPTION:',0
GUICSrcTextX db 'PAR CODE EQUIVALENT:',0
GUICSrcTextY db 'USE ONLY UPPER BYTE',0
SECTION .text
NEWSYM NetAddChar ; dl = color, dh = char
mov eax,ViewBuffer
add eax,[CCursLoc]
mov ebx,[CCursLoc]
sub ebx,[CViewLoc]
cmp ebx,32*12
jbe .okay
mov ebx,[CCursLoc]
sub ebx,32*11
and ebx,0FFE0h
mov [CViewLoc],ebx
.okay
cmp dword[CCursLoc],32*48
jb .notbottom
call .movelistup
mov ebx,[CCursLoc]
sub ebx,32*12
and ebx,0FFE0h
mov [CViewLoc],ebx
jmp NetAddChar
.notbottom
test dword[CCursLoc],1Fh
jnz .nobeginning
cmp dl,' '
je near .skipaddchar
mov byte[eax],dh
inc dword[CCursLoc]
inc eax
.nobeginning
mov ebx,[CCursLoc]
and ebx,1Fh
cmp ebx,1Eh
jne near .noend
add dword[CCursLoc],2
cmp dword[CCursLoc],32*48
jb .notbottom2
call .movelistup
.notbottom2
mov ebx,[CCursLoc]
add ebx,ViewBuffer
sub ebx,3
mov eax,12
cmp byte[ebx],' '
je .notfoundspace
.loop3
cmp byte[ebx],' '
je .foundspace
dec ebx
dec eax
jnz .loop3
jmp .notfoundspace
.foundspace
mov ecx,[CCursLoc]
add ecx,ViewBuffer
inc ebx
cmp byte[ebx],0
je .notfoundspace
mov [ecx],dh
inc ecx
mov byte[ecx],' '
inc ecx
add dword[CCursLoc],2
.loop2
cmp byte[ebx],0
je .skipaddingspace
mov al,[ebx]
mov [ecx],al
mov byte[ecx+1],0
mov byte[ebx],' '
inc ebx
inc ecx
inc dword[CCursLoc]
jmp .loop2
jmp .skipaddingspace
.notfoundspace
mov ecx,[CCursLoc]
add ecx,ViewBuffer
mov [ecx],dh
inc ecx
mov byte[ecx],' '
inc ecx
add dword[CCursLoc],2
.skipaddingspace
jmp NetAddChar
.noend
cmp dl,13
je .ret
cmp dl,10
je .next
mov byte[eax],dl
mov byte[eax+1],0
inc dword[CCursLoc]
ret
.next
add dword[CCursLoc],32
.ret
and dword[CCursLoc],0FFE0h
.skipaddchar
mov ebx,[CViewLoc]
shr ebx,5
mov [NViewLoc],ebx
ret
.movelistup
; move list up by 32 spaces
mov ebx,ViewBuffer
mov ecx,32*47
.loop
mov al,[ebx+32]
mov [ebx],al
inc ebx
dec ecx
jnz .loop
and dword[CCursLoc],0FFE0h
mov dword[ViewBuffer+32*47],0
sub dword[CCursLoc],32
ret
section .bss
CCursLoc resd 1
CViewLoc resd 1
NViewLoc resd 1
TViewLoc resd 1
section .text
DisplayNetOptns:
mov dword[GUIwinsizex+8*4],7*16
mov dword[GUIwinsizey+8*4],57
mov dword[GUINetDisp],'IPX '
mov dword[GUINetDisp+4],' '
mov byte[GUINetDisp+8],0
cmp byte[per2exec],100
je .netokay
mov dword[GUIwinsizex+8*4],7*16
mov dword[GUIwinsizey+8*4],40
mov dword[GUINetDisp],'ERRO'
mov dword[GUINetDisp+4],'R! '
jmp .nomodem
.netokay
%ifdef __MSDOS__
cmp byte[CNetType],8
jne .noipxinvalid
mov dword[GUIwinsizex+8*4],7*16
mov dword[GUIwinsizey+8*4],30
mov dword[GUINetDisp],'ERRO'
mov dword[GUINetDisp+4],'R! '
.noipxinvalid
%endif
cmp byte[CNetType],22
je .yesstate
cmp byte[CNetType],21
jne .nostate
.yesstate
mov dword[GUIwinsizex+8*4],150
mov dword[GUIwinsizey+8*4],59
mov dword[GUINetDisp],'STAT'
mov dword[GUINetDisp+4],'E TR'
mov dword[GUINetDisp+8],'ANSF'
mov dword[GUINetDisp+12],'ER '
mov dword[GUINetDisp+14],0
.nostate
cmp byte[CNetType],20
jne .nochat
mov dword[GUIwinsizex+8*4],188
mov dword[GUIwinsizey+8*4],179
mov dword[GUINetDisp],'CHAT'
mov dword[GUINetDisp+4],0
.nochat
cmp byte[CNetType],15
je .yesterm
cmp byte[CNetType],12
je .yesterm
cmp byte[CNetType],11
je .yesterm
cmp byte[CNetType],10
jne .noterm
.yesterm
mov dword[GUIwinsizex+8*4],188
mov dword[GUIwinsizey+8*4],144
mov dword[GUINetDisp],'TERM'
mov dword[GUINetDisp+4],'INAL'
mov byte[GUINetDisp+8],0
.noterm
cmp byte[CNetType],4
jne .notcpip
; Your IP:
; Start as Server
; Client Options:
; IP :
; Port:
; Connect
mov dword[GUIwinsizex+8*4],201
mov dword[GUIwinsizey+8*4],98
mov dword[GUINetDisp],'INTE'
mov dword[GUINetDisp+4],'RNET'
mov byte[GUINetDisp+8],0
cmp byte[NetPlayNoMore],1
jne .notcpip
mov dword[GUIwinsizex+8*4],201
mov dword[GUIwinsizey+8*4],48
.notcpip
%ifdef __MSDOS__
cmp byte[CNetType],3
je .yesmodem
cmp byte[CNetType],1
jne .nomodem2
jmp .skipmodem3
.yesmodem
mov dword[GUIwinsizex+8*4],188
mov dword[GUIwinsizey+8*4],45
jmp .skipmodem2
.skipmodem3
mov dword[GUIwinsizex+8*4],95
mov dword[GUIwinsizey+8*4],70
.skipmodem2
mov dword[GUINetDisp],'MODE'
mov dword[GUINetDisp+4],'M '
mov byte[GUINetDisp+8],0
.nomodem2
cmp byte[CNetType],2
jne .nomodem
mov dword[GUIwinsizex+8*4],188
mov dword[GUIwinsizey+8*4],154
mov dword[GUINetDisp],'MODE'
mov dword[GUINetDisp+4],'M SE'
mov dword[GUINetDisp+8],'TTIN'
mov word[GUINetDisp+12],'GS'
mov byte[GUINetDisp+14],0
%endif
.nomodem
GUIDrawWindowBox 8,GUINetDisp
cmp byte[per2exec],100
jne near DisplayNetOptnsInvalid
cmp byte[CNetType],22
je near DisplayNetTCPIPState
cmp byte[CNetType],21
je near DisplayNetTCPIPState
%ifdef __MSDOS__
cmp byte[CNetType],1
je near DisplayNetOptnsModem
cmp byte[CNetType],2
je near DisplayNetOptnsModemConfig
cmp byte[CNetType],3
je near DisplayNetOptnsModemDial
%endif
cmp byte[CNetType],4
je near DisplayNetOptnsTCPIP
cmp byte[CNetType],10
je near DisplayNetOptnsModemTerm
cmp byte[CNetType],11
je near DisplayNetOptnsModemTerm
cmp byte[CNetType],12
je near DisplayNetOptnsModemTerm
cmp byte[CNetType],15
je near DisplayNetOptnsModemTerm
cmp byte[CNetType],20
je near DisplayNetOptnsChatWindow
%ifdef __MSDOS__
cmp byte[CNetType],7
je near DisplayNetIPXStart
cmp byte[CNetType],8
je near DisplayNetIPXInvalid
jmp DisplayNetIPXStart
cmp ax,0
je .ipxokay
mov byte[CNetType],8
jmp DisplayNetIPXInvalid
.ipxokay
cmp byte[CNetType],7
jmp DisplayNetIPXStart
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
mov dword[GUIEditStringcWin],0
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,16,GUINetText1
GUIOuttextwin2 8,6,26,GUINetText2
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUINetText1
GUIOuttextwin2 8,5,25,GUINetText2
ret
%endif
DisplayNetTCPIPState:
DrawGUIButton 8,73,48,127,59,GUITCPStateText3,64,0,0
cmp byte[CNetType],22
je near .receive
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,16,GUITCPStateText1
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUITCPStateText1
jmp .send
.receive
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,16,GUITCPStateText2
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUITCPStateText2
.send
DrawGUIWinBox 8,10,30,120,40,167
cmp dword[NetStateTotal],0
je near .nobox
mov eax,[NetStateTotal]
sub eax,[NetStateSize]
mov ebx,110
mul ebx
mov ebx,[NetStateTotal]
div ebx
add eax,10
cmp eax,10
je near .nobox
push eax
inc eax
DrawGUIWinBox3 8,10,30,eax,40,226
pop eax
DrawGUIWinBox3 8,10,30,eax,40,224
.nobox
mov dl,[GUIWincol]
DrawGUIWinBox 8,10,29,120,29,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 8,9,30,8,40,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 8,10,41,120,41,dl ; 0,1,0,1
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 8,122,30,121,40,dl ; 2,0,1,0
ret
SECTION .data
GUITCPStateText1 db 'SENDING STATUS',0
GUITCPStateText2 db 'RECEIVING STATUS',0
GUITCPStateText3 db 'CANCEL',0
SECTION .text
%ifdef __MSDOS__
DisplayNetIPXStart:
DrawGUIButton 8,53,48,87,59,GUINetTextZ,34,0,0
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,16,GUINetText1c
GUIOuttextwin2 8,6,26,GUINetText2c
GUIOuttextwin2 8,6,36,GUINetText3c
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUINetText1c
GUIOuttextwin2 8,5,25,GUINetText2c
GUIOuttextwin2 8,5,35,GUINetText3c
ret
DisplayNetIPXInvalid:
ret
%endif
DisplayNetOptnsTCPIP:
; Your IP:
; Port:
; Start as Server
; Client Options:
; IP :
; Connect
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
cmp byte[NetPlayNoMore],1
jne near .tcpip
GUIOuttextwin2 8,6,16,GUINetTextr1
GUIOuttextwin2 8,6,36,GUINetTextr2
GUIOuttextwin2 8,6,46,GUINetTextr3
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUINetTextr1
GUIOuttextwin2 8,5,35,GUINetTextr2
GUIOuttextwin2 8,5,45,GUINetTextr3
ret
.tcpip
GUIOuttextwin2 8,6,16,GUINetTextf2
GUIOuttextwin2 8,6,26,GUINetTextf3
GUIOuttextwin2 8,6,51,GUINetTexth2
GUIOuttextwin2 8,6,61,GUINetTexti2
GUIOuttextwin2 8,18,98,GUINetTextp2
GUIOuttextwin2 8,6,88,hostname
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUINetTextf2
GUIOuttextwin2 8,5,25,GUINetTextf3
DrawGUIButton 8,5,35,129,46,GUINetTextg2,25,0,0
GUIOuttextwin2 8,5,50,GUINetTexth2
GUIOuttextwin2 8,5,60,GUINetTexti2
DrawGUIButton 8,5,70,129,81,GUINetTextj2,26,0,0
DrawGUIWinBox 8,55,13,95,21,167
DrawGUIWinBox 8,55,23,119,31,167
DrawGUIWinBox 8,26,58,191,66,167
GUIOuttextwin2 8,17,97,GUINetTextp2
GUIOuttextwin2 8,5,87,hostname
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero2
mov byte[GUItextcolor],222
.zero2
GUIOuttextwin2 8,59,15,GUINetTextl2
GUIOuttextwin2 8,30,60,TCPIPAddress
GUIOuttextwin2 8,59,25,ChatNick
mov byte[GUINetTextn2],'_'
test byte[GUINetTextm2+2],8
jz .yesus
mov byte[GUINetTextn2],' '
.yesus
xor eax,eax
mov al,[GUINetTextm2+1]
mov ebx,6
mul ebx
cmp byte[GUINetTextm2],1
je near .cursor2
cmp byte[GUINetTextm2],2
je near .cursor3
add eax,30
GUIOuttextwin2 8,eax,61,GUINetTextn2
jmp .cursor1
.cursor2
xor eax,eax
mov ebx,GUINetTextl2
.loopc
cmp byte[ebx],0
je .donec
inc ebx
add eax,6
jmp .loopc
.donec
add eax,59
GUIOuttextwin2 8,eax,15,GUINetTextn2
jmp .cursor1
.cursor3
xor eax,eax
mov ebx,ChatNick
.loopc2
cmp byte[ebx],0
je .donec2
inc ebx
add eax,6
jmp .loopc2
.donec2
add eax,59
GUIOuttextwin2 8,eax,25,GUINetTextn2
.cursor1
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[UDPConfig],1
jne .nocheckm
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckm
GUIDisplayIconWin 8,5,93,[GUITemp]
ret
DisplayNetOptnsInvalid:
mov byte[CNetType],255
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
mov dword[GUIEditStringcWin],0
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,16,GUINetText1b
GUIOuttextwin2 8,6,26,GUINetText2b
GUIOuttextwin2 8,6,36,GUINetText3b
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,15,GUINetText1b
GUIOuttextwin2 8,5,25,GUINetText2b
GUIOuttextwin2 8,5,35,GUINetText3b
ret
%ifdef __MSDOS__
DisplayNetOptnsModem:
mov dword[GUIEditStringcWin],0
DrawGUIButton 8,5,15,89,26,GUINetTextG,21,0,0
DrawGUIButton 8,5,30,89,41,GUINetTextH,22,0,0
DrawGUIButton 8,5,45,89,56,GUINetTexth,23,0,0
DrawGUIButton 8,5,60,89,71,GUINetTextI,24,0,0
ret
DisplayNetOptnsModemConfig:
cmp byte[ModemInitStat],0
je .nodeinitmodem
; call DeInitModem
mov byte[ModemInitStat],0
.nodeinitmodem
DrawGUIWinBox 8,31,70,50,78,167
DrawGUIWinBox 8,21,125,175,133,167
DrawGUIWinBox 8,21,136,175,144,167
mov byte[GUINetText8],'0'
mov al,[ComIRQ]
cmp byte[ComIRQ],10
jb .no10
mov byte[GUINetText8],'1'
sub al,10
.no10
add al,'0'
mov [GUINetText8+1],al
sub byte[GUItextcolor],15
GUIOuttextwin2 8,21,28,GUINetText3
GUIOuttextwin2 8,21,38,GUINetText4
GUIOuttextwin2 8,21,48,GUINetText5
GUIOuttextwin2 8,21,58,GUINetText6
GUIOuttextwin2 8,6,73,GUINetText7
GUIOuttextwin2 8,21,88,GUINetTextC
GUIOuttextwin2 8,21,98,GUINetTextD
GUIOuttextwin2 8,106,28,GUINetTextJ
GUIOuttextwin2 8,106,38,GUINetTextK
GUIOuttextwin2 8,106,48,GUINetTextL
GUIOuttextwin2 8,106,58,GUINetTextM
GUIOuttextwin2 8,106,68,GUINetTextN
GUIOuttextwin2 8,106,78,GUINetTextO
GUIOuttextwin2 8,106,88,GUINetTextP
GUIOuttextwin2 8,6,128,GUINetTexte
GUIOuttextwin2 8,6,139,GUINetTextf
GUIOuttextwin2 8,26,152,GUINetTextX
add byte[GUItextcolor],15
GUIOuttextwin2 8,20,27,GUINetText3
GUIOuttextwin2 8,20,37,GUINetText4
GUIOuttextwin2 8,20,47,GUINetText5
GUIOuttextwin2 8,20,57,GUINetText6
GUIOuttextwin2 8,5,72,GUINetText7
GUIOuttextwin2 8,20,87,GUINetTextC
GUIOuttextwin2 8,20,97,GUINetTextD
GUIOuttextwin2 8,105,27,GUINetTextJ
GUIOuttextwin2 8,105,37,GUINetTextK
GUIOuttextwin2 8,105,47,GUINetTextL
GUIOuttextwin2 8,105,57,GUINetTextM
GUIOuttextwin2 8,105,67,GUINetTextN
GUIOuttextwin2 8,105,77,GUINetTextO
GUIOuttextwin2 8,105,87,GUINetTextP
GUIOuttextwin2 8,5,127,GUINetTexte
GUIOuttextwin2 8,5,138,GUINetTextf
GUIOuttextwin2 8,25,151,GUINetTextX
DrawGUIButton 8,55,69,63,79,GUINetText9,25,-2,0
DrawGUIButton 8,66,69,74,79,GUINetTextA,26,-2,0
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 8,6,16,GUINetTextR
GUIOuttextwin2 8,6,113,GUINetTextE
GUIOuttextwin2 8,91,16,GUINetTextQ
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],164
.zero
GUIOuttextwin2 8,5,15,GUINetTextR
GUIOuttextwin2 8,5,112,GUINetTextE
GUIOuttextwin2 8,90,15,GUINetTextQ
mov byte[GUItextcolor],223
GUIOuttextwin2 8,36,73,GUINetText8
GUIOuttextwin2 8,25,128,GUIInitSt1
GUIOuttextwin2 8,25,139,GUIInitSt2
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],222
.zero3
GUIOuttextwin2 8,35,72,GUINetText8
GUIOuttextwin2 8,24,127,GUIInitSt1
GUIOuttextwin2 8,24,138,GUIInitSt2
GUIDisplayButtonHole 8,9,25,byte[ComNum],1
GUIDisplayButtonHole 8,9,35,byte[ComNum],2
GUIDisplayButtonHole 8,9,45,byte[ComNum],3
GUIDisplayButtonHole 8,9,55,byte[ComNum],4
GUIDisplayButtonHole 8,94,25,byte[BaudRate],0
GUIDisplayButtonHole 8,94,35,byte[BaudRate],1
GUIDisplayButtonHole 8,94,45,byte[BaudRate],2
GUIDisplayButtonHole 8,94,55,byte[BaudRate],3
GUIDisplayButtonHole 8,94,65,byte[BaudRate],4
GUIDisplayButtonHole 8,94,75,byte[BaudRate],5
GUIDisplayButtonHole 8,94,85,byte[BaudRate],6
GUIDisplayButtonHole 8,9,85,byte[GUIDialSt+3],'T'
GUIDisplayButtonHole 8,9,95,byte[GUIDialSt+3],'P'
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[FossilUse],1
jne .nocheckm
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckm
GUIDisplayIconWin 8,12,147,[GUITemp]
ret
DisplayNetOptnsModemDial:
DrawGUIWinBox 8,5,25,175,33,167
DrawGUIButton 8,141,38,175,49,GUINetTextT,28,0,0
sub byte[GUItextcolor],15
GUIOuttextwin2 8,6,14,GUINetTextF
add byte[GUItextcolor],15
GUIOuttextwin2 8,5,13,GUINetTextF
mov byte[GUItextcolor],223
GUIOuttextwin2 8,9,28,DialNumber
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],222
.zero3
GUIOuttextwin2 8,8,27,DialNumber
mov dword[GUIEditString],DialNumber
mov dword[GUIEditStringmLen],27
; mov dword[GUIEditStringmLenM],27
mov dword[GUIEditStringcWin],1
ret
%endif
DisplayNetOptnsModemTerm:
DrawGUIWinBox 8,6,15,181,127,167
; draw borders
mov dl,[GUIWincol]
DrawGUIWinBox 8,6,14,181,14,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 8,5,15,4,127,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 8,6,128,181,128,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 8,183,15,182,127,dl
; cancel button
DrawGUIButton 8,120,135,181,146,GUINetTextS,27,0,0
; draw text
mov dword[CurCStringPos],ViewBuffer+1
mov ebx,[CViewLoc]
add dword[CurCStringPos],ebx
mov byte[GUItextcolor],223
GUIOuttextwin2 8,9,28-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,36-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,44-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,52-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,60-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,68-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,76-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,84-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,92-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,100-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,108-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,116-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,124-5,[CurCStringPos]
add dword[CurCStringPos],32
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],222
.zero3
mov dword[CurCStringPos],ViewBuffer+1
mov ebx,[CViewLoc]
add dword[CurCStringPos],ebx
GUIOuttextwin2 8,8,27-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,35-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,43-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,51-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,59-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,67-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,75-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,83-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,91-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,99-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,107-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,115-5,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,123-5,[CurCStringPos]
add dword[CurCStringPos],32
ret
%macro NetChatWindowHelp 3
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[%3],1
jne %%nocheck
mov dword[GUITemp],GUIIconDataCheckBoxC
%%nocheck
cmp byte[%3],2
jne %%nocheckb
mov dword[GUITemp],GUIIconDataCheckBoxX
%%nocheckb
GUIDisplayIconWin 8,%1,%2,[GUITemp]
%endmacro
DisplayNetOptnsChatWindow:
mov byte[GUINetText8],'0'
mov al,[Latency]
cmp byte[Latency],10
jb .no10b
mov byte[GUINetText8],'1'
sub al,10
.no10b
add al,'0'
mov [GUINetText8+1],al
DrawGUIWinBox 8,55,157,74,165,167
GUIDisplayButtonHole 8,111,137,byte[UseRemoteSRAMData],0
GUIDisplayButtonHole 8,111,147,byte[UseRemoteSRAMData],1
GUIDisplayButtonHole 8,111,157,byte[UseRemoteSRAMData],2
NetChatWindowHelp 7,135,pl1neten
NetChatWindowHelp 32,135,pl2neten
NetChatWindowHelp 57,135,pl3neten
NetChatWindowHelp 7,145,pl4neten
NetChatWindowHelp 32,145,pl5neten
NetChatWindowHelp 7,175,BackState
sub byte[GUItextcolor],15
GUIOuttextwin2 8,21,140,GUINetTextW
GUIOuttextwin2 8,46,140,GUINetTextW+2
GUIOuttextwin2 8,71,140,GUINetTextW+4
GUIOuttextwin2 8,21,150,GUINetTextW+6
GUIOuttextwin2 8,46,150,GUINetTextW+8
GUIOuttextwin2 8,10,160,GUINetTextY
GUIOuttextwin2 8,124,140,GUINetTextb
GUIOuttextwin2 8,124,150,GUINetTextc
GUIOuttextwin2 8,124,160,GUINetTextd
GUIOuttextwin2 8,21,180,GUINetTexto2
add byte[GUItextcolor],15
GUIOuttextwin2 8,20,139,GUINetTextW
GUIOuttextwin2 8,45,139,GUINetTextW+2
GUIOuttextwin2 8,70,139,GUINetTextW+4
GUIOuttextwin2 8,20,149,GUINetTextW+6
GUIOuttextwin2 8,45,149,GUINetTextW+8
GUIOuttextwin2 8,9,159,GUINetTextY
GUIOuttextwin2 8,123,139,GUINetTextb
GUIOuttextwin2 8,123,149,GUINetTextc
GUIOuttextwin2 8,123,159,GUINetTextd
GUIOuttextwin2 8,20,179,GUINetTexto2
DrawGUIWinBox 8,6,15,181,112,167
; draw borders
mov dl,[GUIWincol]
DrawGUIWinBox 8,6,14,181,14,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox 8,5,15,4,112,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox 8,6,113,181,113,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox 8,183,15,182,112,dl
DrawGUIWinBox 8,6,117,181,125,167
; disconnect button
DrawGUIButton 8,111,169,181,180,GUINetTextU,27,0,0
DrawGUIButton 8,79,156,87,166,GUINetText9,29,-2,0
DrawGUIButton 8,90,156,98,166,GUINetTextA,30,-2,0
mov byte[GUItextcolor],223
mov dword[CurCStringPos],ViewBuffer+1
mov ebx,[CViewLoc]
add dword[CurCStringPos],ebx
GUIOuttextwin2 8,9,36-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,44-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,52-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,60-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,68-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,76-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,84-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,92-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,100-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,108-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,116-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,9,124-18,[CurCStringPos]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3b
mov byte[GUItextcolor],222
.zero3b
mov dword[CurCStringPos],ViewBuffer+1
mov ebx,[CViewLoc]
add dword[CurCStringPos],ebx
GUIOuttextwin2 8,8,35-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,43-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,51-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,59-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,67-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,75-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,83-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,91-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,99-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,107-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,115-18,[CurCStringPos]
add dword[CurCStringPos],32
GUIOuttextwin2 8,8,123-18,[CurCStringPos]
; Determine ChatString Position
push ecx
mov ebx,ChatString
mov ecx,[GUIEditStringcLen]
sub ecx,ebx
cmp ecx,26
jb .nostring
cmp ecx,255
ja .nostring
sub ecx,26
add ebx,ecx
.nostring
mov [CurCStringPos],ebx
pop ecx
mov byte[GUItextcolor],223
GUIOuttextwin2 8,10,120,[CurCStringPos]
GUIOuttextwin2 8,60,160,GUINetText8
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],222
.zero3
GUIOuttextwin2 8,9,119,[CurCStringPos]
GUIOuttextwin2 8,59,159,GUINetText8
mov dword[GUIEditString],ChatString
mov dword[GUIEditStringmLen],200
; mov dword[GUIEditStringmLenM],26
mov dword[GUIEditStringcWin],1
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 8,7,131,GUINetTextV
GUIOuttextwin2 8,111,131,GUINetTexta
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],164
.zero
GUIOuttextwin2 8,6,130,GUINetTextV
GUIOuttextwin2 8,110,130,GUINetTexta
; #############
; mov eax,[CViewLoc]
; shr eax,5
; add eax,12
; mov [TViewLoc],eax
; 181,112,167
;CViewLoc dd 0
;NViewLoc dd 0
;TViewLoc dd 0
; 15,181,112
; DrawSlideBarWin 8,181,15,[NViewLoc],[TViewLoc],12,97,GUINCStA
ret
SECTION .bss
NEWSYM GUINCStA, resd 3
NEWSYM CNetType, resb 1
SECTION .data
NEWSYM Latency, db 2
NEWSYM Latencytochange, db 2
NEWSYM LatencyLeft, db 2
SECTION .bss
NEWSYM NetSwap, resb 1
RemCNetType resb 1
UseRemoteSRAMData resb 1
ChatString resb 276
FileNameMod resb 512
CurCStringPos resd 1
SECTION .data
%ifdef __MSDOS__
GUINetText1 db 'IPX HAS NOT BEEN',0
GUINetText2 db 'IMPLEMENTED YET',0
%endif
GUINetText1b db 'PLEASE SET THE',0
GUINetText2b db 'PERCENTAGE OF',0
GUINetText3b db 'EXECUTION TO 100',0
%ifdef __MSDOS__
GUINetText1c db 'IPX IS IN BETA',0
GUINetText2c db 'STAGES. IT MAY',0
GUINetText3c db 'NOT WORK RIGHT!',0
GUINetText3 db 'COM1 (3F8)',0
GUINetText4 db 'COM2 (2F8)',0
GUINetText5 db 'COM3 (3E8)',0
GUINetText6 db 'COM4 (2E8)',0
GUINetText7 db 'IRQ ',0
%endif
GUINetText8 db '00',0
GUINetText9 db '+',0
GUINetTextA db '-',0
%ifdef __MSDOS__
GUINetTextC db 'TONE (ATDT)',0
GUINetTextD db 'PULSE (ATDP)',0
GUINetTextE db 'INIT STRINGS :',0
GUINetTexte db '1.',0
GUINetTextf db '2.',0
GUINetTextF db 'ENTER NUMBER TO DIAL :',0
GUINetTextG db 'DIAL NUMBER',0
GUINetTextH db 'WAIT FOR RING',0
GUINetTexth db 'CONFIG MODEM',0
GUINetTextI db 'MANUAL',0
GUINetTextJ db '9600',0
GUINetTextK db '14400',0
GUINetTextL db '19200',0
GUINetTextM db '28800',0
GUINetTextN db '38400',0
GUINetTextO db '57600',0
GUINetTextP db '115200',0
GUINetTextQ db 'BAUDRATE (BPS) :',0
GUINetTextR db 'COMPORT :',0
%endif
GUINetTextS db 'CANCEL',0
%ifdef __MSDOS__
GUINetTextT db 'DIAL',0
%endif
GUINetTextU db 'DISCONNECT',0
GUINetTextV db 'PLAYER SELECT :',0
GUINetTextW db '1',0,'2',0,'3',0,'4',0,'5',0
%ifdef __MSDOS__
GUINetTextX db 'USE FOSSIL DRIVER',0
%endif
GUINetTextY db 'LATENCY',0
GUINetTextZ db 'OKAY',0
GUINetTexta db 'SAVE DATA :',0
GUINetTextb db 'NONE',0
GUINetTextc db 'LOCAL',0
GUINetTextd db 'REMOTE',0
GUINetTexte2 db 'YOUR IP:',0
GUINetTextf2 db 'PORT',0
GUINetTextf3 db 'NICKNAME',0
GUINetTextg2 db 'START AS SERVER',0
GUINetTexth2 db 'CLIENT OPTIONS:',0
GUINetTexti2 db 'IP:',0
GUINetTextj2 db 'CONNECT TO SERVER',0
GUINetTextl2 db '7845',0,0,0
GUINetTextm2 db 0,0,0
GUINetTextn2 db '_',0
GUINetTexto2 db 'BACK BUFFER',0
GUINetTextp2 db 'ALLOW UDP CONNECTION',0
GUINetTextr1 db 'PLEASE RESTART ZSNESW',0
GUINetTextr2 db 'BEFORE STARTING A NEW',0
GUINetTextr3 db 'NETPLAY SESSION',0
%ifdef __MSDOS__
BaudVal dd 9600,14400,19200,28800,38400,57600,115200
%endif
SECTION .text
DisplayGameOptns:
; Key redefinition for :
; Sound Channels 0 .. 7, Save/Select/Load States, Fast Forward
; State Selection 0 .. 9
; Exit, Load, Reset, BG Disables, Reset, Windowing, New Gfx, OffsetMode
GUIDrawWindowBox 9,GUIGameDisp
; Draw Shadows
mov al,[GUIWincol]
mov [GUIGameOptnsColA],al
mov byte[GUIGameOptnsColB],202
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUIGameOptnsColB],196
.zero3
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,6,16,GUIGameOptnsText3
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText4+2],'1'
GUIOuttextwin2 9,9,26,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'2'
GUIOuttextwin2 9,9+45,26,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'3'
GUIOuttextwin2 9,9+90,26,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'4'
GUIOuttextwin2 9,9+135,26,GUIGameOptnsText4
GUIOuttextwin2 9,9+180,26,GUIGameOptnsText5
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,6,36,GUIGameOptnsTextC
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,9,46,GUIGameOptnsText1A
GUIOuttextwin2 9,9,54,GUIGameOptnsTextD
GUIOuttextwin2 9,9,62,GUIGameOptnsTextL
GUIOuttextwin2 9,9,70,GUIGameOptnsTextE
GUIOuttextwin2 9,9,78,GUIGameOptnsTextF
GUIOuttextwin2 9,9,86,GUIGameOptnsTextG
GUIOuttextwin2 9,9,94,GUIGameOptnsTextT
; cmp byte[OSPort],3
; jne near .notwin32
%ifndef __MSDOS__
GUIOuttextwin2 9,109,46,GUIGameOptnsTextS
%endif
;.notwin32
GUIOuttextwin2 9,109,54,GUIGameOptnsTextH
GUIOuttextwin2 9,109,62,GUIGameOptnsTextM
GUIOuttextwin2 9,109,70,GUIGameOptnsTextN
GUIOuttextwin2 9,109,78,GUIGameOptnsTextO
GUIOuttextwin2 9,109,86,GUIGameOptnsTextP
GUIOuttextwin2 9,109,94,GUIGameOptnsTextX
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,6,104,GUIGameOptnsText1
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText2+2],'1'
GUIOuttextwin2 9,9,114,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'2'
GUIOuttextwin2 9,9+45,114,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'3'
GUIOuttextwin2 9,9+45*2,114,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'4'
GUIOuttextwin2 9,9+45*3,114,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'5'
GUIOuttextwin2 9,9,122,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'6'
GUIOuttextwin2 9,9+45,122,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'7'
GUIOuttextwin2 9,9+45*2,122,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'8'
GUIOuttextwin2 9,9+45*3,122,GUIGameOptnsText2
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,6,132,GUIGameOptnsText6
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText7+2],'0'
GUIOuttextwin2 9,9+45*2,134,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'1'
GUIOuttextwin2 9,9+45*3,134,GUIGameOptnsText7
GUIOuttextwin2 9,9+45*4,134,GUIGameOptnsTextY
mov byte[GUIGameOptnsText7+2],'2'
GUIOuttextwin2 9,9,141,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'3'
GUIOuttextwin2 9,9+45,142,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'4'
GUIOuttextwin2 9,9+45*2,142,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'5'
GUIOuttextwin2 9,9+45*3,142,GUIGameOptnsText7
GUIOuttextwin2 9,9+45*4,142,GUIGameOptnsTextZ
mov byte[GUIGameOptnsText7+2],'6'
GUIOuttextwin2 9,9,150,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'7'
GUIOuttextwin2 9,9+45,150,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'8'
GUIOuttextwin2 9,9+45*2,150,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'9'
GUIOuttextwin2 9,9+45*3,150,GUIGameOptnsText7
GUIOuttextwin2 9,9,160,GUIGameOptnsTextI
GUIOuttextwin2 9,9+57,160,GUIGameOptnsTextJ
GUIOuttextwin2 9,9+114,160,GUIGameOptnsTextK
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,6,170,GUIGameOptnsText8
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,9,180,GUIGameOptnsText9
GUIOuttextwin2 9,9+52,180,GUIGameOptnsTextA
GUIOuttextwin2 9,9+109,180,GUIGameOptnsTextB
GUIOuttextwin2 9,9,190,GUIGameOptnsTextQ
GUIOuttextwin2 9,9+52,190,GUIGameOptnsTextR
GUIOuttextwin2 9,9+160,180,GUIGameOptnsTextU
GUIOuttextwin2 9,137,190,GUIGameOptnsTextV
mov byte[GUIGameOptnsColA],163
mov byte[GUIGameOptnsColB],217
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUIGameOptnsColA],164
mov byte[GUIGameOptnsColB],211
.zero
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,5,15,GUIGameOptnsText3
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText4+2],'1'
GUIOuttextwin2 9,8,25,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'2'
GUIOuttextwin2 9,8+45,25,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'3'
GUIOuttextwin2 9,8+90,25,GUIGameOptnsText4
mov byte[GUIGameOptnsText4+2],'4'
GUIOuttextwin2 9,8+135,25,GUIGameOptnsText4
GUIOuttextwin2 9,8+180,25,GUIGameOptnsText5
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,5,35,GUIGameOptnsTextC
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,8,45,GUIGameOptnsText1A
GUIOuttextwin2 9,8,53,GUIGameOptnsTextD
GUIOuttextwin2 9,8,61,GUIGameOptnsTextL
GUIOuttextwin2 9,8,69,GUIGameOptnsTextE
GUIOuttextwin2 9,8,77,GUIGameOptnsTextF
GUIOuttextwin2 9,8,85,GUIGameOptnsTextG
GUIOuttextwin2 9,8,93,GUIGameOptnsTextT
; cmp byte[OSPort],3
; jne near .notwin32b
%ifndef __MSDOS__
GUIOuttextwin2 9,108,45,GUIGameOptnsTextS
%endif
;.notwin32b
GUIOuttextwin2 9,108,53,GUIGameOptnsTextH
GUIOuttextwin2 9,108,61,GUIGameOptnsTextM
GUIOuttextwin2 9,108,69,GUIGameOptnsTextN
GUIOuttextwin2 9,108,77,GUIGameOptnsTextO
GUIOuttextwin2 9,108,85,GUIGameOptnsTextP
GUIOuttextwin2 9,108,93,GUIGameOptnsTextX
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,5,103,GUIGameOptnsText1
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText2+2],'1'
GUIOuttextwin2 9,8,113,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'2'
GUIOuttextwin2 9,8+45,113,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'3'
GUIOuttextwin2 9,8+45*2,113,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'4'
GUIOuttextwin2 9,8+45*3,113,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'5'
GUIOuttextwin2 9,8,121,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'6'
GUIOuttextwin2 9,8+45,121,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'7'
GUIOuttextwin2 9,8+45*2,121,GUIGameOptnsText2
mov byte[GUIGameOptnsText2+2],'8'
GUIOuttextwin2 9,8+45*3,121,GUIGameOptnsText2
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,5,131,GUIGameOptnsText6
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
mov byte[GUIGameOptnsText7+2],'0'
GUIOuttextwin2 9,8+45*2,133,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'1'
GUIOuttextwin2 9,8+45*3,133,GUIGameOptnsText7
GUIOuttextwin2 9,8+45*4,133,GUIGameOptnsTextY
mov byte[GUIGameOptnsText7+2],'2'
GUIOuttextwin2 9,8,141,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'3'
GUIOuttextwin2 9,8+45,141,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'4'
GUIOuttextwin2 9,8+45*2,141,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'5'
GUIOuttextwin2 9,8+45*3,141,GUIGameOptnsText7
GUIOuttextwin2 9,8+45*4,141,GUIGameOptnsTextZ
mov byte[GUIGameOptnsText7+2],'6'
GUIOuttextwin2 9,8,149,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'7'
GUIOuttextwin2 9,8+45,149,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'8'
GUIOuttextwin2 9,8+45*2,149,GUIGameOptnsText7
mov byte[GUIGameOptnsText7+2],'9'
GUIOuttextwin2 9,8+45*3,149,GUIGameOptnsText7
GUIOuttextwin2 9,8,159,GUIGameOptnsTextI
GUIOuttextwin2 9,8+57,159,GUIGameOptnsTextJ
GUIOuttextwin2 9,8+114,159,GUIGameOptnsTextK
mov al,byte[GUIGameOptnsColA]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,5,169,GUIGameOptnsText8
mov al,byte[GUIGameOptnsColB]
mov byte[GUItextcolor],al
GUIOuttextwin2 9,8,179,GUIGameOptnsText9
GUIOuttextwin2 9,8+52,179,GUIGameOptnsTextA
GUIOuttextwin2 9,8+109,179,GUIGameOptnsTextB
GUIOuttextwin2 9,8,189,GUIGameOptnsTextQ
GUIOuttextwin2 9,8+52,189,GUIGameOptnsTextR
GUIOuttextwin2 9,8+160,179,GUIGameOptnsTextU
GUIOuttextwin2 9,136,189,GUIGameOptnsTextV
; Draw black boxes
DGOptnsDrawBox 27,24,[KeyBGDisble0]
DGOptnsDrawBox 27+45,24,[KeyBGDisble1]
DGOptnsDrawBox 27+45*2,24,[KeyBGDisble2]
DGOptnsDrawBox 27+45*3,24,[KeyBGDisble3]
DGOptnsDrawBox 27+45*4,24,[KeySprDisble]
DGOptnsDrawBox 78,44,[KeyUsePlayer1234]
DGOptnsDrawBox 78,52,[KeyResetAll]
DGOptnsDrawBox 78,60,[KeyExtraEnab]
DGOptnsDrawBox 78,68,[KeyNewGfxSwt]
DGOptnsDrawBox 78,76,[KeyWinDisble]
DGOptnsDrawBox 78,84,[KeyOffsetMSw]
DGOptnsDrawBox 78,92,[KeySlowDown]
; cmp byte[OSPort],3
; jne near .notwin32c
%ifndef __MSDOS__
DGOptnsDrawBox 178,44,[KeyRewind]
%endif
;.notwin32c
DGOptnsDrawBox 178,52,[KeyFastFrwrd]
DGOptnsDrawBox 178,60,[KeyVolUp]
DGOptnsDrawBox 178,68,[KeyVolDown]
DGOptnsDrawBox 178,76,[KeyFRateUp]
DGOptnsDrawBox 178,84,[KeyFRateDown]
DGOptnsDrawBox 178,92,[KeyDisplayFPS]
DGOptnsDrawBox 27,112,[KeyDisableSC0]
DGOptnsDrawBox 27+45,112,[KeyDisableSC1]
DGOptnsDrawBox 27+45*2,112,[KeyDisableSC2]
DGOptnsDrawBox 27+45*3,112,[KeyDisableSC3]
DGOptnsDrawBox 27,120,[KeyDisableSC4]
DGOptnsDrawBox 27+45,120,[KeyDisableSC5]
DGOptnsDrawBox 27+45*2,120,[KeyDisableSC6]
DGOptnsDrawBox 27+45*3,120,[KeyDisableSC7]
DGOptnsDrawBox 27+45*2,132,[KeyStateSlc0]
DGOptnsDrawBox 27+45*3,132,[KeyStateSlc1]
DGOptnsDrawBox 27+45*4,132,[KeyIncStateSlot]
DGOptnsDrawBox 27,140,[KeyStateSlc2]
DGOptnsDrawBox 27+45,140,[KeyStateSlc3]
DGOptnsDrawBox 27+45*2,140,[KeyStateSlc4]
DGOptnsDrawBox 27+45*3,140,[KeyStateSlc5]
DGOptnsDrawBox 27+45*4,140,[KeyDecStateSlot]
DGOptnsDrawBox 27,148,[KeyStateSlc6]
DGOptnsDrawBox 27+45,148,[KeyStateSlc7]
DGOptnsDrawBox 27+45*2,148,[KeyStateSlc8]
DGOptnsDrawBox 27+45*3,148,[KeyStateSlc9]
DGOptnsDrawBox 8+25,158,[KeySaveState]
DGOptnsDrawBox 8+57+25,158,[KeyLoadState]
DGOptnsDrawBox 8+114+25,158,[KeyStateSelct]
DGOptnsDrawBox 8+25,178,[KeyQuickLoad]
DGOptnsDrawBox 8+57+26,178,[KeyQuickRst]
DGOptnsDrawBox 8+114+20,178,[KeyQuickExit]
DGOptnsDrawBox 8+114+78,178,[KeyQuickClock]
DGOptnsDrawBox 8+25,188,[KeyQuickChat]
DGOptnsDrawBox 8+57+45,188,[KeyQuickSnapShot]
DGOptnsDrawBox 8+108+70,188,[KeyQuickSaveSPC]
ret
SECTION .bss
GUIGameOptnsColA resb 1
GUIGameOptnsColB resb 1
GUIGameDisplayKy resd 1
SECTION .data
GUIGameOptnsText1 db 'SOUND DISABLES :',0
GUIGameOptnsText2 db 'CH#',0
GUIGameOptnsText3 db 'BG DISABLES :',0
GUIGameOptnsText4 db 'BG#',0
GUIGameOptnsText5 db 'OBJ ',0
GUIGameOptnsText6 db 'STATE SELECTS :',0
GUIGameOptnsText7 db 'ST#',0
GUIGameOptnsText8 db 'QUICK KEYS :',0
GUIGameOptnsText9 db 'LOAD',0
GUIGameOptnsTextA db 'RESET',0
GUIGameOptnsTextB db 'EXIT',0
GUIGameOptnsTextC db 'MISC TOGGLES :',0
GUIGameOptnsTextD db 'CLRSWITCHES',0
GUIGameOptnsTextE db 'NEW GFX ENG',0
GUIGameOptnsTextF db 'BG WINDOW',0
GUIGameOptnsTextG db 'OFFSET MODE',0
GUIGameOptnsTextH db 'FASTFWD KEY',0
GUIGameOptnsTextI db 'SAVE',0
GUIGameOptnsTextJ db 'LOAD',0
GUIGameOptnsTextK db 'PICK',0
GUIGameOptnsTextL db 'EXTRADEVICE',0
GUIGameOptnsTextM db '+VOL',0
GUIGameOptnsTextN db '-VOL',0
GUIGameOptnsTextO db '+FRAME RATE',0
GUIGameOptnsTextP db '-FRAME RATE',0
GUIGameOptnsTextQ db 'CHAT',0
GUIGameOptnsTextR db 'SNAPSHOT',0
GUIGameOptnsTextS db 'REWIND KEY',0
GUIGameOptnsTextT db 'SLOWDWN KEY',0
GUIGameOptnsTextU db 'CLOCK',0
GUIGameOptnsTextV db 'SAVE SPC',0
GUIGameOptnsTextX db 'DISPLAY FPS',0
GUIGameOptnsTextY db 'ST+',0
GUIGameOptnsTextZ db 'ST-',0
GUIGameOptnsText1A db 'USE PL 12/34',0
SECTION .text
DisplayGUIOptns:
%ifdef __WIN32__
mov dword[GUIwinsizey+10*4],192
%endif
GUIDrawWindowBox 10,GUIGUIDisp
push eax
cmp byte[CurPalSelect],1
je .yespal2b
cmp byte[CurPalSelect],2
je .yespal3b
mov al,[GUIRAdd]
mov [TRVal2],al
mov al,[GUIGAdd]
mov [TGVal2],al
mov al,[GUIBAdd]
mov [TBVal2],al
jmp .nopal1b
.yespal2b
mov al,[GUITRAdd]
mov [TRVal2],al
mov al,[GUITGAdd]
mov [TGVal2],al
mov al,[GUITBAdd]
mov [TBVal2],al
jmp .nopal1b
.yespal3b
mov al,[GUIWRAdd]
mov [TRVal2],al
mov al,[GUIWGAdd]
mov [TGVal2],al
mov al,[GUIWBAdd]
mov [TBVal2],al
.nopal1b
pop eax
mov eax,dword[GUIwinposx+10*4]
mov ebx,dword[GUIwinposy+10*4]
mov ecx,eax
add eax,25
add ecx,25+32*4
add ebx,124
xor edx,edx
mov dl,215
sub dl,[GUIWincoladd]
DrawGUILine
add ebx,11
DrawGUILine
add ebx,11
DrawGUILine
inc ecx
mov ebx,dword[GUIwinposy+10*4]
inc eax
add ebx,125
sub dl,13
DrawGUILine
add ebx,11
DrawGUILine
add ebx,11
DrawGUILine
xor eax,eax
mov al,[TRVal2]
shl eax,2
mov dword[GUITemp],22
add [GUITemp],eax
GUIDisplayIconWin 10,[GUITemp],120,GUIIconDataSlideBar
xor eax,eax
mov al,[TGVal2]
shl eax,2
mov dword[GUITemp],22
add [GUITemp],eax
GUIDisplayIconWin 10,[GUITemp],132,GUIIconDataSlideBar
xor eax,eax
mov al,[TBVal2]
shl eax,2
mov dword[GUITemp],22
add [GUITemp],eax
GUIDisplayIconWin 10,[GUITemp],144,GUIIconDataSlideBar
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIEnableTransp],1
jne .nocheckt
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckt
GUIDisplayIconWin 10,124,23,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[FilteredGUI],1
jne .nocheckfg
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckfg
GUIDisplayIconWin 10,124,43,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[mousewrap],1
jne .nocheck
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck
GUIDisplayIconWin 10,12,23,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[mouseshad],1
jne .nocheck2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck2
GUIDisplayIconWin 10,12,33,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[lastcursres],1
jne .nocheck3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck3
GUIDisplayIconWin 10,12,43,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[resetposn],1
je .nocheck4
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck4
GUIDisplayIconWin 10,12,53,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIClick],1
jne .nocheck5
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck5
GUIDisplayIconWin 10,12,63,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[JoyPad1Move],1
jne .nocheck6
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck6
GUIDisplayIconWin 10,12,73,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIEffect],1
jne .nocheck6b
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck6b
GUIDisplayIconWin 10,12,83,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIEffect],4
jne .nocheck7
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck7
GUIDisplayIconWin 10,124,83,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIEffect],2
jne .nocheck7b
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck7b
GUIDisplayIconWin 10,12,93,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GUIEffect],3
jne .nocheck8
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck8
GUIDisplayIconWin 10,124,93,[GUITemp]
%ifdef __WIN32__
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[MouseWheel],1
jne .nocheck9
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck9
GUIDisplayIconWin 10,124,33,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[AlwaysOnTop],1
jne .nocheck10
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck10
GUIDisplayIconWin 10,12,168,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[SaveMainWindowPos],1
jne .nocheck11
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck11
GUIDisplayIconWin 10,12,178,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[AllowMultipleInst],1
jne .nocheck12
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck12
GUIDisplayIconWin 10,12,188,[GUITemp]
%endif
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 10,6,111,GUIGUIOptnsText1
GUIOuttextwin2 10,6,16,GUIGUIOptnsText5
%ifdef __WIN32__
GUIOuttextwin2 10,6,160,GUIGUIOptnsTextD
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[TrapMouseCursor],1
jne .nocheck13
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheck13
GUIDisplayIconWin 10,124,53,[GUITemp]
%endif
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],164
.zero
GUIOuttextwin2 10,5,110,GUIGUIOptnsText1
GUIOuttextwin2 10,5,15,GUIGUIOptnsText5
%ifdef __WIN32__
GUIOuttextwin2 10,5,160,GUIGUIOptnsTextD
%endif
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],211
.zero3
sub byte[GUItextcolor],15
GUIOuttextwin2u 10,26,28,GUIGUIOptnsText2,0
GUIOuttextwin2u 10,26,38,GUIGUIOptnsText3,6
GUIOuttextwin2u 10,26,48,GUIGUIOptnsText4,0
GUIOuttextwin2u 10,26,58,GUIGUIOptnsText7,5
GUIOuttextwin2u 10,26,68,GUIGUIOptnsText8,0
GUIOuttextwin2u 10,26,78,GUIGUIOptnsTextA,0
GUIOuttextwin2 10,60,111,GUIGUIOptnsTextG
GUIOuttextwin2 10,100,111,GUIGUIOptnsTextH
GUIOuttextwin2 10,147,111,GUIGUIOptnsTextI
GUIOuttextwin2u 10,26,88,GUIGUIOptnsTextB,1
GUIOuttextwin2u 10,138,88,GUIGUIOptnsTextBb,2
GUIOuttextwin2u 10,26,98,GUIGUIOptnsTextC,3
GUIOuttextwin2u 10,138,98,GUIGUIOptnsTextCb,13
GUIOuttextwin2u 10,138,28,GUIGUIOptnsTextJ,0
GUIOuttextwin2u 10,138,48,GUIGUIOptnsTextM,0
%ifdef __WIN32__
GUIOuttextwin2u 10,26,173,GUIGUIOptnsTextE,0
GUIOuttextwin2u 10,26,183,GUIGUIOptnsTextF,2
GUIOuttextwin2u 10,138,38,GUIGUIOptnsTextK,1
GUIOuttextwin2u 10,26,193,GUIGUIOptnsTextL,1
GUIOuttextwin2u 10,138,58,GUIGUIOptnsTextN,1
%endif
mov byte[GUIGUIOptnsText6],'R'
GUIOuttextwin2 10,16,123,GUIGUIOptnsText6
mov byte[GUIGUIOptnsText6],'G'
GUIOuttextwin2 10,16,135,GUIGUIOptnsText6
mov byte[GUIGUIOptnsText6],'B'
GUIOuttextwin2 10,16,147,GUIGUIOptnsText6
add byte[GUItextcolor],15
GUIOuttextwin2 10,25,27,GUIGUIOptnsText2
GUIOuttextwin2 10,25,37,GUIGUIOptnsText3
GUIOuttextwin2 10,25,47,GUIGUIOptnsText4
GUIOuttextwin2 10,25,57,GUIGUIOptnsText7
GUIOuttextwin2 10,25,67,GUIGUIOptnsText8
GUIOuttextwin2 10,25,77,GUIGUIOptnsTextA
GUIOuttextwin2 10,59,110,GUIGUIOptnsTextG
GUIOuttextwin2 10,99,110,GUIGUIOptnsTextH
GUIOuttextwin2 10,146,110,GUIGUIOptnsTextI
GUIOuttextwin2 10,25,87,GUIGUIOptnsTextB
GUIOuttextwin2 10,137,87,GUIGUIOptnsTextBb
GUIOuttextwin2 10,25,97,GUIGUIOptnsTextC
GUIOuttextwin2 10,137,97,GUIGUIOptnsTextCb
GUIOuttextwin2 10,137,27,GUIGUIOptnsTextJ
GUIOuttextwin2 10,137,47,GUIGUIOptnsTextM
%ifdef __WIN32__
GUIOuttextwin2 10,25,172,GUIGUIOptnsTextE
GUIOuttextwin2 10,25,182,GUIGUIOptnsTextF
GUIOuttextwin2 10,137,37,GUIGUIOptnsTextK
GUIOuttextwin2 10,25,192,GUIGUIOptnsTextL
GUIOuttextwin2 10,137,57,GUIGUIOptnsTextN
%endif
mov byte[GUIGUIOptnsText6],'R'
GUIOuttextwin2 10,15,122,GUIGUIOptnsText6
mov byte[GUIGUIOptnsText6],'G'
GUIOuttextwin2 10,15,134,GUIGUIOptnsText6
mov byte[GUIGUIOptnsText6],'B'
GUIOuttextwin2 10,15,146,GUIGUIOptnsText6
GUIDisplayButtonHole 10,48,108,byte[CurPalSelect],0
GUIDisplayButtonHole 10,88,108,byte[CurPalSelect],1
GUIDisplayButtonHole 10,135,108,byte[CurPalSelect],2
mov dword[GUIGUIOptnsText9],0
mov esi,GUIGUIOptnsText9+2
xor eax,eax
mov al,[TRVal2]
call .processnum
GUIOuttextwin2 10,160,123,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],222
.zero5
GUIOuttextwin2 10,159,122,[GUITemp]
mov dword[GUIGUIOptnsText9],0
mov esi,GUIGUIOptnsText9+2
xor eax,eax
mov al,[TGVal2]
call .processnum
GUIOuttextwin2 10,160,135,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero6
mov byte[GUItextcolor],222
.zero6
GUIOuttextwin2 10,159,134,[GUITemp]
mov dword[GUIGUIOptnsText9],0
mov esi,GUIGUIOptnsText9+2
xor eax,eax
mov al,[TBVal2]
call .processnum
GUIOuttextwin2 10,160,147,[GUITemp]
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zero7
mov byte[GUItextcolor],222
.zero7
GUIOuttextwin2 10,159,146,[GUITemp]
ret
.processnum
mov ebx,10
div bl
add ah,48
mov [esi],ah
cmp al,0
je .nomore
dec esi
xor ah,ah
div bl
add ah,48
mov [esi],ah
.nomore
mov [GUITemp],esi
mov byte[GUItextcolor],223
ret
;mousewrap db 0 ; 0 = mouse boundries, 1 = mouse wrap
;mouseshad db 1 ; 0 = no mouse shadow, 1 = mouse shadow
;lastcursres db 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu
;resetposn db 1 ; 0 = no window reset, 1 = window reset
SECTION .data
GUIGUIOptnsText1 db 'COLOR:',0
GUIGUIOptnsText2 db 'MOUSE WRAP',0
GUIGUIOptnsText3 db 'MOUSE SHADOW',0
GUIGUIOptnsText4 db 'KEEP MENU POSITN',0
GUIGUIOptnsText5 db 'GUI SWITCHES :',0
GUIGUIOptnsText6 db '@',0
GUIGUIOptnsText7 db 'SAVE WIN POSITNS',0
GUIGUIOptnsText8 db 'CLICK ENTERS GUI',0
GUIGUIOptnsText9 dd 0
GUIGUIOptnsTextA db 'USE JOYPAD1',0
GUIGUIOptnsTextB dd 'SNOW EFFECT',0
GUIGUIOptnsTextBb dd 'BURNING EFFECT',0
GUIGUIOptnsTextC dd 'WATER EFFECT A',0
GUIGUIOptnsTextCb dd 'WATER EFFECT B',0
GUIGUIOptnsTextD dd 'MAIN WINDOW OPTIONS :',0
GUIGUIOptnsTextE dd 'ALWAYS ON TOP',0
GUIGUIOptnsTextF db 'SAVE MAIN WINDOW POSITION',0
GUIGUIOptnsTextG db 'BACK',0
GUIGUIOptnsTextH db 'TITLE',0
GUIGUIOptnsTextI db 'WIN',0
GUIGUIOptnsTextJ db 'TRANSPARENT MSGS',0
GUIGUIOptnsTextK db 'WHEEL MOUSE',0
GUIGUIOptnsTextL db 'ALLOW MULTIPLE INSTANCES',0
GUIGUIOptnsTextM db 'FILTERED GUI',0
GUIGUIOptnsTextN db 'TRAP MOUSE CURSOR',0
SECTION .text
DisplayGUIAbout:
;This will attach compile date onto the end of GUIGUIAboutText1
pushad
EXTSYM VERSION_STR, placedate
mov eax,GUIGUIAboutText1
mov [VERSION_STR],eax
call placedate
popad
GUIDrawWindowBox 11,GUIAboutDisp
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero3
mov byte[GUItextcolor],211
.zero3
%ifndef __LINUX__
DrawGUIButton 11,90,50,175,60,GUIGUIAboutText8,65,0,0
%endif
sub byte[GUItextcolor],15
GUIOuttextwin2 11,6,16,GUIGUIAboutText1
GUIOuttextwin2 11,6,26,GUIGUIAboutText7
GUIOuttextwin2 11,6,46,GUIGUIAboutText3
GUIOuttextwin2 11,6,56,GUIGUIAboutText4
GUIOuttextwin2 11,6,66,GUIGUIAboutText6c
GUIOuttextwin2 11,6,86,GUIGUIAboutText6
GUIOuttextwin2 11,6,96,GUIGUIAboutText6b
GUIOuttextwin2 11,6,106,GUIGUIAboutText6d
GUIOuttextwin2 11,6,116,GUIGUIAboutText6e
GUIOuttextwin2 11,6,131,GUIGUIAboutTextA
GUIOuttextwin2 11,6,141,GUIGUIAboutTextB
GUIOuttextwin2 11,6,151,GUIGUIAboutTextC
GUIOuttextwin2 11,6,161,GUIGUIAboutTextD
GUIOuttextwin2 11,6,171,GUIGUIAboutTextE
GUIOuttextwin2 11,6,181,GUIGUIAboutTextF
GUIOuttextwin2 11,6,191,GUIGUIAboutTextG
add byte[GUItextcolor],15
GUIOuttextwin2 11,5,15,GUIGUIAboutText1
GUIOuttextwin2 11,5,25,GUIGUIAboutText7
GUIOuttextwin2 11,5,45,GUIGUIAboutText3
GUIOuttextwin2 11,5,55,GUIGUIAboutText4
GUIOuttextwin2 11,5,65,GUIGUIAboutText6c
GUIOuttextwin2 11,5,85,GUIGUIAboutText6
GUIOuttextwin2 11,5,95,GUIGUIAboutText6b
GUIOuttextwin2 11,5,105,GUIGUIAboutText6d
GUIOuttextwin2 11,5,115,GUIGUIAboutText6e
GUIOuttextwin2 11,5,130,GUIGUIAboutTextA
GUIOuttextwin2 11,5,140,GUIGUIAboutTextB
GUIOuttextwin2 11,5,150,GUIGUIAboutTextC
GUIOuttextwin2 11,5,160,GUIGUIAboutTextD
GUIOuttextwin2 11,5,170,GUIGUIAboutTextE
GUIOuttextwin2 11,5,180,GUIGUIAboutTextF
GUIOuttextwin2 11,5,190,GUIGUIAboutTextG
mov al,[GUIWincol]
mov byte[GUItextcolor],al
GUIOuttextwin2 11,6,36,GUIGUIAboutText2
GUIOuttextwin2 11,6,76,GUIGUIAboutText5
mov byte[GUItextcolor],163
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],164
.zero
GUIOuttextwin2 11,5,35,GUIGUIAboutText2
GUIOuttextwin2 11,5,75,GUIGUIAboutText5
ret
SECTION .data
GUIGUIAboutText1 db 'ZSNES V',ZVERSION,' ',0 ;Need room for date
GUIGUIAboutText2 db 'CODED BY : ',0
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
%ifdef __MSDOS__
GUIGUIAboutText7 db 'DOS VERSION',0
%elifdef __WIN32__
GUIGUIAboutText7 db 'WIN VERSION',0
%elifdef __LINUX__
GUIGUIAboutText7 db 'LINUX VERSION',0
%endif
GUIGUIAboutText8 db 'WWW.ZSNES.COM',0
GUIGUIAboutTextA db 'ZSNES comes with ABSOLUTELY',0
GUIGUIAboutTextB db 'NO WARRANTY. This is free',0
GUIGUIAboutTextC db 'software, and you are welcome',0
GUIGUIAboutTextD db 'to redistribute it under',0
GUIGUIAboutTextE db 'certain conditions; please',0
%ifndef __LINUX__
GUIGUIAboutTextF db 'read ',39,'LICENSE.TXT',39,0
%else
GUIGUIAboutTextF db 'read ',39,'LICENSE',39,0
%endif
GUIGUIAboutTextG db 'thoroughly before using it.',0
SECTION .text
DisplayGUIMovies:
GUIDrawWindowBox 15,GUIMovieDisp
cmp byte[MovieRecordWinVal],0
je near .displayboxa
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],211
.zero4
sub byte[GUItextcolor],15
GUIOuttextwin2 15,9,16,GUIMovieText5
GUIOuttextwin2 15,9,26,GUIMovieText6
GUIOuttextwin2 15,9,41,GUIMovieText7
add byte[GUItextcolor],15
GUIOuttextwin2 15,8,15,GUIMovieText5
GUIOuttextwin2 15,8,25,GUIMovieText6
GUIOuttextwin2 15,8,40,GUIMovieText7
DrawGUIButton 15,17,55,59,66,GUIMovieText8,19,0,0
DrawGUIButton 15,70,55,112,66,GUIMovieText9,20,0,0
ret
.displayboxa
mov dword[GUIMovieTextA+9],'INAC'
mov dword[GUIMovieTextA+13],'TIVE'
mov byte[GUIMovieTextA+17],' '
cmp byte[MovieProcessing],1
jne .noplay
mov dword[GUIMovieTextA+9],'PLAY'
mov dword[GUIMovieTextA+13],'ING '
mov byte[GUIMovieTextA+17],' '
.noplay
cmp byte[MovieProcessing],2
jne .norec
mov dword[GUIMovieTextA+9],'RECO'
mov dword[GUIMovieTextA+13],'RDIN'
mov byte[GUIMovieTextA+17],'G'
.norec
DrawGUIButton 15,7,17,49,28,GUIMovieText1,16,0,0
DrawGUIButton 15,7,33,49,44,GUIMovieText2,17,0,0
DrawGUIButton 15,7,49,49,60,GUIMovieText3,18,0,0
cmp byte[GUIWincoladd],0
je .zero
mov byte[GUItextcolor],211
.zero
sub byte[GUItextcolor],15
GUIOuttextwin2 15,61,16,GUIMovieText4
GUIOuttextwin2 15,7,70,GUIMovieTextA
mov byte[GUIChoseSaveText2],'0'
GUIOuttextwin2 15,71,28,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'1'
GUIOuttextwin2 15,91,28,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'2'
GUIOuttextwin2 15,111,28,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'3'
GUIOuttextwin2 15,131,28,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'4'
GUIOuttextwin2 15,71,43,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'5'
GUIOuttextwin2 15,91,43,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'6'
GUIOuttextwin2 15,111,43,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'7'
GUIOuttextwin2 15,131,43,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'8'
GUIOuttextwin2 15,71,58,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'9'
GUIOuttextwin2 15,91,58,GUIChoseSaveText2
add byte[GUItextcolor],15
GUIOuttextwin2 15,60,15,GUIMovieText4
GUIOuttextwin2 15,6,69,GUIMovieTextA
mov byte[GUIChoseSaveText2],'0'
GUIOuttextwin2 15,70,27,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'1'
GUIOuttextwin2 15,90,27,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'2'
GUIOuttextwin2 15,110,27,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'3'
GUIOuttextwin2 15,130,27,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'4'
GUIOuttextwin2 15,70,42,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'5'
GUIOuttextwin2 15,90,42,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'6'
GUIOuttextwin2 15,110,42,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'7'
GUIOuttextwin2 15,130,42,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'8'
GUIOuttextwin2 15,70,57,GUIChoseSaveText2
mov byte[GUIChoseSaveText2],'9'
GUIOuttextwin2 15,90,57,GUIChoseSaveText2
GUIDisplayButtonHole 15,60,25,byte[CMovieExt],'v'
GUIDisplayButtonHole 15,80,25,byte[CMovieExt],'1'
GUIDisplayButtonHole 15,100,25,byte[CMovieExt],'2'
GUIDisplayButtonHole 15,120,25,byte[CMovieExt],'3'
GUIDisplayButtonHole 15,60,40,byte[CMovieExt],'4'
GUIDisplayButtonHole 15,80,40,byte[CMovieExt],'5'
GUIDisplayButtonHole 15,100,40,byte[CMovieExt],'6'
GUIDisplayButtonHole 15,120,40,byte[CMovieExt],'7'
GUIDisplayButtonHole 15,60,55,byte[CMovieExt],'8'
GUIDisplayButtonHole 15,80,55,byte[CMovieExt],'9'
ret
SECTION .data
GUIMovieText1 db 'PLAY',0
GUIMovieText2 db 'RECORD',0
GUIMovieText3 db 'STOP',0
GUIMovieText4 db 'SELECT :',0
GUIMovieText5 db 'WARNING : THIS MOVIE',0
GUIMovieText6 db ' FILE ALREADY EXISTS',0
GUIMovieText7 db 'OKAY TO OVERWRITE?',0
GUIMovieText8 db 'YES',0
GUIMovieText9 db 'NO',0
GUIMovieTextA db 'STATUS : ',0
CMovieExt db 'v'
SECTION .text
; Key types: Up, Down, Left, Right, A, B, X, Y, L, R (Press/Relase/P+R)
; Frame delays: 1 frame, 2, 3, 4, 5, 1 sec., 2, 3 ,4 ,5
%macro DrawBorderedBox 6
; draw borders
mov dl,[GUIWincol]
DrawGUIWinBox %1,%2,%6,%4,%3,dl ; For some reason, this freezes if I
; replace %6 with %3-1
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox %1,%2-1,%3,%2,%5,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox %1,%2,%5,%4,%5+1,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox %1,%4,%3,%4+1,%5,dl
DrawGUIWinBox %1,%2,%3,%4,%5,167
%endmacro
%macro DrawBorderedBoxB 7 ; Special function for combo displays
; draw borders
mov dl,[GUIWincol]
DrawGUIWinBox %1,%2,%6,%4,%3,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox %1,%2-1,%3,%2,%5,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox %1,%2,%5,%4,%5+1,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox %1,%4,%3,%4+1,%5,dl
DrawGUIWinBox %1,%2,%3,%4,%5,167
mov byte[GUIComboText3],%7
mov byte[GUItextcolor],223
GUIOuttextwin2 %1,%2+5,%3+2,GUIComboText3
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je %%zero
mov byte[GUItextcolor],222
%%zero
GUIOuttextwin2 %1,%2+4,%3+1,GUIComboText3
%endmacro
%macro DrawBorderedBoxB2 7 ; Special function for combo displays
; draw borders
mov dl,[GUIWincol]
DrawGUIWinBox %1,%2,%6,%4,%3,dl
mov dl,[GUIWincol]
add dl,1
DrawGUIWinBox %1,%2-1,%3,%2,%5,dl
mov dl,[GUIWincol]
add dl,4
DrawGUIWinBox %1,%2,%5,%4,%5+1,dl
mov dl,[GUIWincol]
add dl,3
DrawGUIWinBox %1,%4,%3,%4+1,%5,dl
DrawGUIWinBox %1,%2,%3,%4,%5,167
mov byte[GUIComboText3b+1],%7
mov byte[GUItextcolor],223
GUIOuttextwin2 %1,%2+2,%3+2,GUIComboText3b
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je %%zero
mov byte[GUItextcolor],222
%%zero
GUIOuttextwin2 %1,%2+1,%3+1,GUIComboText3b
%endmacro
%macro InitTextColor 0
mov al,217
cmp byte[GUIWincoladd],0
je .zero3
mov al,211
.zero3
sub al,15
mov byte[TextColorSp+2],al
mov al,[GUIWincol]
mov byte[TextColorSp],al
mov al,163
cmp byte[GUIWincoladd],0
je .zero
mov al,164
mov byte[GUItextcolor],164
.zero
mov byte[TextColorSp+1],al
%endmacro
%macro GUIOuttextwin2b 4 ; Special, yellow text
mov al,[TextColorSp]
mov byte[GUItextcolor],al
GUIOuttextwin2 %1,%2,%3,%4
mov al,[TextColorSp+1]
mov byte[GUItextcolor],al
GUIOuttextwin2 %1,%2-1,%3-1,%4
%endmacro
%macro GUIOuttextwin2c 4 ; Boxed, green text
mov byte[GUItextcolor],223
GUIOuttextwin2 %1,%2,%3,%4
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je %%zero
mov byte[GUItextcolor],222
%%zero
GUIOuttextwin2 %1,%2-1,%3-1,%4
%endmacro
%macro DrawSlideBar 10
DrawSlideBarWin %1,%2,%3+8,%4,%5,%6,%7-16,%8
mov al,[TextColorSp+2]
mov byte[GUItextcolor],al
cmp byte[GUICHold],%9
jne .noholda
add byte[GUIWincoladd],3
.noholda
GUIDisplayIconWin %1,%2,%3,GUIIconDataUpArrow
cmp byte[GUICHold],%9
jne .noholda2
sub byte[GUIWincoladd],3
.noholda2
mov al,[TextColorSp+2]
mov byte[GUItextcolor],al
cmp byte[GUICHold],%10
jne .noholdb
add byte[GUIWincoladd],3
.noholdb
GUIDisplayIconWin %1,%2,%3+%7-8,GUIIconDataDownArrow
cmp byte[GUICHold],%10
jne .noholdb2
sub byte[GUIWincoladd],3
.noholdb2
%endmacro
%macro DrawCheckBox 4
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[%4],0
je %%nocheck4
mov dword[GUITemp],GUIIconDataCheckBoxC
%%nocheck4
GUIDisplayIconWin %1,%2,%3,[GUITemp]
%endmacro
%macro DetermineChar 2
cmp al,%1
jne %%control
mov al,%2
%%control
%endmacro
DisplayGUICombo:
mov eax,[GUIccombcursloc]
cmp [GUIccomblcursloc],eax
je .nolastcurschange
mov [GUIccomblcursloc],eax
; copy contents into temporary variables
mov esi,[GUIccombcursloc]
shl esi,6
add esi,[GUIccombcursloc]
add esi,[GUIccombcursloc]
add esi,CombinDataGlob
cmp byte[GUIComboGameSpec],0
je .nogamespecb
sub esi,CombinDataGlob
add esi,CombinDataLocl
.nogamespecb
; copy 20 bytes to GUIComboTextH
mov ecx,20
mov edi,GUIComboTextH
rep movsb
; copy 42 bytes to GUIComboData
mov ecx,42
mov edi,GUIComboData
rep movsb
mov ax,[esi]
mov [GUIComboKey],ax
mov al,[esi+2]
mov [GUIComboPNum],al
mov al,[esi+3]
mov [GUIComboLHorz],al
; determine length of combo data
mov eax,GUIComboData
xor ecx,ecx
.notfin
cmp byte[eax],0
je .fin
inc eax
inc ecx
jmp .notfin
.fin
mov [GUINumCombo],cl
.nolastcurschange
; copy into data if description equal
mov esi,[GUIccombcursloc]
shl esi,6
add esi,[GUIccombcursloc]
add esi,[GUIccombcursloc]
add esi,CombinDataGlob
cmp byte[GUIComboGameSpec],0
je .nogamespecc
sub esi,CombinDataGlob
add esi,CombinDataLocl
.nogamespecc
mov ecx,20
mov edi,GUIComboTextH
.comploop
mov al,[esi]
cmp al,[edi]
jne near .notequal
or al,al
jz .donecomp
inc esi
inc edi
dec ecx
jnz .comploop
.donecomp
call ComboClip
mov edi,[GUIccombcursloc]
shl edi,6
add edi,[GUIccombcursloc]
add edi,[GUIccombcursloc]
add edi,CombinDataGlob
cmp byte[GUIComboGameSpec],0
je .nogamespecd
sub edi,CombinDataGlob
add edi,CombinDataLocl
.nogamespecd
mov ecx,20
mov esi,GUIComboTextH
rep movsb
; copy 42 bytes to GUIComboData
mov ecx,42
mov esi,GUIComboData
rep movsb
mov ax,[GUIComboKey]
mov [edi],ax
mov al,[GUIComboPNum]
mov [edi+2],al
mov al,[GUIComboLHorz]
mov [edi+3],al
.notequal
InitTextColor
cmp byte[GUIWincoladd],0
je .zero4
mov byte[GUItextcolor],211
.zero4
GUIDrawWindowBox 16,GUIComboDisp
DrawBorderedBox 16,10,20,190,80,19
DrawBorderedBox 16,10,91,130,99,90
DrawBorderedBox 16,135,91,157,99,90
DrawBorderedBox 16,10,110,220,146,109
; Draw SlideBar
; win#,X,Y start,List Loc,List size,# Lines,Bar Size(Y),UpArrowResource#,DownArrowRes#
DrawSlideBar 16,192,20,[GUIccombviewloc],[NumCombo],8,61,GUICSStC,13,14
; Draw control boxes
DrawBorderedBoxB 16,75,150,85,157,149,251
DrawBorderedBoxB 16,89,150,99,157,149,252
DrawBorderedBoxB 16,103,150,113,157,149,253
DrawBorderedBoxB 16,117,150,127,157,149,254
DrawBorderedBoxB 16,131,150,141,157,149,'A'
DrawBorderedBoxB 16,145,150,155,157,149,'B'
DrawBorderedBoxB 16,159,150,169,157,149,'X'
DrawBorderedBoxB 16,173,150,183,157,149,'Y'
DrawBorderedBoxB 16,187,150,197,157,149,'L'
DrawBorderedBoxB 16,201,150,211,157,149,'R'
DrawBorderedBoxB2 16,215,150,227,157,149,'T'
DrawBorderedBoxB2 16,231,150,243,157,149,'L'
DrawBorderedBoxB 16,75,160,85,167,159,251
DrawBorderedBoxB 16,89,160,99,167,159,252
DrawBorderedBoxB 16,103,160,113,167,159,253
DrawBorderedBoxB 16,117,160,127,167,159,254
DrawBorderedBoxB 16,131,160,141,167,159,'A'
DrawBorderedBoxB 16,145,160,155,167,159,'B'
DrawBorderedBoxB 16,159,160,169,167,159,'X'
DrawBorderedBoxB 16,173,160,183,167,159,'Y'
DrawBorderedBoxB 16,187,160,197,167,159,'L'
DrawBorderedBoxB 16,201,160,211,167,159,'R'
DrawBorderedBoxB2 16,215,160,227,167,159,'T'
DrawBorderedBoxB2 16,231,160,243,167,159,'L'
DrawBorderedBoxB 16,75,170,85,177,169,251
DrawBorderedBoxB 16,89,170,99,177,169,252
DrawBorderedBoxB 16,103,170,113,177,169,253
DrawBorderedBoxB 16,117,170,127,177,169,254
DrawBorderedBoxB 16,131,170,141,177,169,'A'
DrawBorderedBoxB 16,145,170,155,177,169,'B'
DrawBorderedBoxB 16,159,170,169,177,169,'X'
DrawBorderedBoxB 16,173,170,183,177,169,'Y'
DrawBorderedBoxB 16,187,170,197,177,169,'L'
DrawBorderedBoxB 16,201,170,211,177,169,'R'
DrawBorderedBoxB2 16,215,170,227,177,169,'T'
DrawBorderedBoxB2 16,231,170,243,177,169,'L'
DrawBorderedBoxB 16,10,189,20,196,188,'1'
DrawBorderedBoxB 16,24,189,34,196,188,'2'
DrawBorderedBoxB 16,38,189,48,196,188,'3'
DrawBorderedBoxB 16,52,189,62,196,188,'4'
DrawBorderedBoxB 16,66,189,76,196,188,'5'
DrawBorderedBoxB 16,80,189,90,196,188,'9'
DrawBorderedBoxB 16,107,189,117,196,188,250
DrawBorderedBoxB 16,121,189,131,196,188,'1'
DrawBorderedBoxB 16,135,189,145,196,188,'2'
DrawBorderedBoxB 16,149,189,159,196,188,'3'
DrawBorderedBoxB 16,163,189,173,196,188,'4'
DrawBorderedBoxB 16,177,189,187,196,188,'5'
DrawBorderedBoxB 16,204,189,218,196,188,255
; Normal Text
mov byte[GUItextcolor],217
cmp byte[GUIWincoladd],0
je .zero5
mov byte[GUItextcolor],211
.zero5
sub byte[GUItextcolor],15
GUIOuttextwin2 16,10,13,GUIComboText1
GUIOuttextwin2 16,138,13,GUIComboText2
GUIOuttextwin2 16,10,84,GUIComboTextE
GUIOuttextwin2 16,138,84,GUIComboTextF
GUIOuttextwin2 16,10,103,GUIComboText4
GUIOuttextwin2 16,10,152,GUIComboText5
GUIOuttextwin2 16,10,162,GUIComboText6
GUIOuttextwin2 16,10,172,GUIComboText7
GUIOuttextwin2 16,10,182,GUIComboText8
GUIOuttextwin2 16,114,182,GUIComboText9
GUIOuttextwin2 16,204,182,GUIComboTextG
GUIOuttextwin2 16,165,85,GUIComboTextI
GUIOuttextwin2 16,176,93,GUIComboTextJ
GUIOuttextwin2 16,176,101,GUIComboTextK
add byte[GUItextcolor],15
GUIOuttextwin2 16,9,12,GUIComboText1
GUIOuttextwin2 16,137,12,GUIComboText2
GUIOuttextwin2 16,9,83,GUIComboTextE
GUIOuttextwin2 16,137,83,GUIComboTextF
GUIOuttextwin2 16,9,102,GUIComboText4
GUIOuttextwin2 16,9,151,GUIComboText5
GUIOuttextwin2 16,9,161,GUIComboText6
GUIOuttextwin2 16,9,171,GUIComboText7
GUIOuttextwin2 16,9,181,GUIComboText8
GUIOuttextwin2 16,113,181,GUIComboText9
GUIOuttextwin2 16,203,181,GUIComboTextG
GUIOuttextwin2 16,164,84,GUIComboTextI
GUIOuttextwin2 16,175,92,GUIComboTextJ
GUIOuttextwin2 16,175,100,GUIComboTextK
; Buttons
DrawGUIButton 16,202,20,246,31,GUIComboTextA,60,-1,0
DrawGUIButton 16,202,35,246,46,GUIComboTextB,61,-1,0
DrawGUIButton 16,202,50,246,61,GUIComboTextC,62,-1,0
DrawGUIButton 16,202,65,246,76,GUIComboTextD,63,-1,0
; Calculate Text Cursor Position / Draw Box Text
xor eax,eax
.nozerocp
cmp byte[GUIComboTextH+eax],0
je .zerocp
inc eax
jmp .nozerocp
.zerocp
mov [GUIComboPos],al
test byte[GUICCFlash],8
jnz .nound
mov byte[GUIComboTextH+eax],'_'
mov byte[GUIComboTextH+eax+1],0
.nound
GUIOuttextwin2c 16,12,94,GUIComboTextH
xor eax,eax
mov al,[GUIComboPos]
mov byte[GUIComboTextH+eax],0
; Display Current Combo Key
mov eax,[GUIComboKey]
mov ebx,[ScanCodeListing+eax*3]
mov [GUIGameDisplayKy],ebx
mov byte[GUIGameDisplayKy+3],0
GUIOuttextwin2c 16,139,94,GUIGameDisplayKy
; Buttons
mov al,[TextColorSp+2]
add al,15
mov byte[GUItextcolor],al
DrawGUIButton 16,202,20,246,31,GUIComboTextA,60,-1,0
DrawGUIButton 16,202,35,246,46,GUIComboTextB,61,-1,0
DrawGUIButton 16,202,50,246,61,GUIComboTextC,62,-1,0
DrawGUIButton 16,202,65,246,76,GUIComboTextD,63,-1,0
; Hole Switches
GUIDisplayButtonHole 16,178,82,byte[GUIComboPNum],0
GUIDisplayButtonHole 16,196,82,byte[GUIComboPNum],1
GUIDisplayButtonHole 16,214,82,byte[GUIComboPNum],2
GUIDisplayButtonHole 16,232,82,byte[GUIComboPNum],3
; Check Box
DrawCheckBox 16,163,88,GUIComboLHorz
DrawCheckBox 16,163,96,GUIComboGameSpec
; Draw Combination Keys (Each 15x11 -> 210x36)
xor eax,eax
mov al,[GUINumCombo]
or eax,eax
jz near .comboend
xor ebx,ebx
mov ecx,11
mov edx,112
.comboiconloop
push eax
mov al,[GUIComboData+ebx]
dec al
mov esi,GUIIconDataComboPressRelease
cmp al,12
jb .doneicon
mov esi,GUIIconDataComboPress
sub al,12
cmp al,12
jb .doneicon
mov esi,GUIIconDataComboRelease
sub al,12
cmp al,12
jb .doneicon
mov esi,GUIIconDataComboFrame
cmp al,17
jne .not9
mov al,20
jmp .doneicon
.not9
cmp al,18
jb .doneicon
sub al,7
mov esi,GUIIconDataComboSecond
cmp al,11
jne .notback
mov al,250-37
jmp .doneicon
.notback
.doneicon
cmp al,11
jbe .control
add al,37
.control
DetermineChar 0,251
DetermineChar 1,252
DetermineChar 2,253
DetermineChar 3,254
DetermineChar 4,'A'
DetermineChar 5,'B'
DetermineChar 6,'X'
DetermineChar 7,'Y'
DetermineChar 8,'L'
DetermineChar 9,'R'
DetermineChar 10,'T'
DetermineChar 11,'E'
mov [GUIComboText3],al
pushad
mov eax,edx
add ecx,8
add eax,5
mov byte[GUItextcolor],223
push ecx
push eax
GUIOuttextwin2 16,ecx,eax,GUIComboText3
pop eax
pop ecx
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zerocol
mov byte[GUItextcolor],222
.zerocol
dec ecx
dec eax
GUIOuttextwin2 16,ecx,eax,GUIComboText3
popad
push ecx
push edx
push ebx
GUIDisplayIconWin 16,ecx,edx,esi
pop ebx
pop edx
pop ecx
pop eax
add ecx,15
cmp ecx,11+15*14
jne .notoverflowx
sub ecx,15*14
add edx,11
.notoverflowx
inc ebx
dec eax
jnz near .comboiconloop
.comboend
; Display Bordered Box
cmp dword[NumCombo],0
je near .nowinbox
mov ebx,[GUIccombcursloc]
sub ebx,[GUIccombviewloc]
mov eax,ebx
lea ebx,[ebx*8]
sub ebx,eax
add ebx,23
DrawGUIWinBox2 16,10,190,7,224
.nowinbox
; Display Scroll Lines
; Copy Description to GUIScrolBufA, Others to GUIScrolBufB
mov edi,[GUIccombviewloc]
shl edi,6
add edi,[GUIccombviewloc]
add edi,[GUIccombviewloc]
add edi,CombinDataGlob
cmp byte[GUIComboGameSpec],0
je .nogamespec
sub edi,CombinDataGlob
add edi,CombinDataLocl
.nogamespec
mov ecx,12
mov eax,25
mov ebx,[NumCombo]
sub ebx,[GUIccombviewloc]
cmp ebx,0
jle near .noscrolldisplay
cmp ebx,8
jbe .scrolloop
mov ebx,8
.scrolloop
push ebx
push edi
push eax
xor eax,eax
mov ax,[edi+62]
mov eax,[ScanCodeListing+eax*3]
mov [GUIScrolBufB],eax
mov byte[GUIScrolBufB+3],32
mov dword[GUIScrolBufB+4],20202020h
mov al,[edi+64]
add al,49
mov [GUIScrolBufB+4],al
mov byte[GUIScrolBufB+7],'N'
cmp byte[edi+65],0
je .yesnoff
mov byte[GUIScrolBufB+7],'Y'
.yesnoff
mov bl,20
mov eax,GUIScrolBufA
.scloopb
mov bh,[edi]
mov [eax],bh
inc edi
inc eax
dec bl
jnz .scloopb
pop eax
mov byte[GUItextcolor],223
push ecx
push eax
GUIOuttextwin2 16,ecx,eax,GUIScrolBufA
pop eax
pop ecx
push ecx
push eax
add ecx,128
GUIOuttextwin2 16,ecx,eax,GUIScrolBufB
pop eax
pop ecx
mov byte[GUItextcolor],221
cmp byte[GUIWincoladd],0
je .zerocolb
mov byte[GUItextcolor],222
.zerocolb
push ecx
push eax
dec ecx
dec eax
push ecx
push eax
GUIOuttextwin2 16,ecx,eax,GUIScrolBufA
pop eax
pop ecx
add ecx,128
GUIOuttextwin2 16,ecx,eax,GUIScrolBufB
pop eax
pop ecx
pop edi
pop ebx
add eax,7
add edi,66
dec ebx
jnz near .scrolloop
.noscrolldisplay
ret
SECTION .bss
GUIccombviewloc resd 1
GUIccombcursloc resd 1
GUIccomblcursloc resd 1
NEWSYM NumCombo, resd 1
NumComboGlob resd 1
NEWSYM NumComboLocl, resd 1
GUICSStC resd 3
GUIComboKey resd 1
GUIComboPos resb 1
GUIComboPNum resb 1
GUIComboLHorz resb 1
NEWSYM GUINumCombo, resb 1
GUIComboData resb 50
GUIScrolBufA resb 21
GUIScrolBufB resb 10
;CombinDataGlob times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff
;CombinDataLocl times 3300 db 0
SECTION .data
GUIComboText1 db 'DESCRIPTION',0
GUIComboText2 db 'KEY P# LH',0
GUIComboText3 db ' ',0
GUIComboText3b db 'S ',0
GUIComboText4 db 'COMBINATION KEYS:',0
GUIComboText5 db 'PRESS+REL',0
GUIComboText6 db 'PRESS ONLY',0
GUIComboText7 db 'REL ONLY',0
GUIComboText8 db 'FRAME DELAY',0
GUIComboText9 db 'SECOND DELAY',0
GUIComboTextA db 'CLEAR',0
GUIComboTextB db 'ADD',0
GUIComboTextC db 'REPLACE',0
GUIComboTextD db 'DELETE',0
GUIComboTextE db 'DESCRIPTION:',0
GUIComboTextF db 'KEY:',0
GUIComboTextG db 'DEL',0
GUIComboTextH db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
GUIComboTextI db 'P# 1 2 3 4',0
GUIComboTextJ db 254,' = LAST ',253,'/',254,0
GUIComboTextK db 'GAME SPECFIC',0
GUIIconDataComboPressRelease:
db 0 ,166,0 ,0 ,166,0 ,0 ,0 ,0 ,0
db 0 ,166,0 ,166,166,166,0 ,0 ,0 ,0
db 0 ,166,0 ,0 ,166,0 ,0 ,0 ,0 ,0
db 166,166,166,0 ,166,0 ,0 ,0 ,0 ,0
db 0 ,166,0 ,0 ,166,0 ,0 ,0 ,0 ,0
db 0 ,234,234,234,234,0 ,0 ,0 ,0 ,0
db 234,234,234,234,234,234,0 ,0 ,0 ,0
db 234,234,234,234,234,234,0 ,0 ,0 ,0
db 235,234,234,234,234,235,0 ,0 ,0 ,0
db 0 ,235,235,235,235,0 ,0 ,0 ,0 ,0
GUIIconDataComboPress:
db 0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,166,166,166,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,236,236,236,236,0 ,0 ,0 ,0 ,0
db 236,236,236,236,236,236,0 ,0 ,0 ,0
db 236,236,236,236,236,236,0 ,0 ,0 ,0
db 237,236,236,236,236,237,0 ,0 ,0 ,0
db 0 ,237,237,237,237,0 ,0 ,0 ,0 ,0
GUIIconDataComboRelease:
db 0 ,0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,166,166,166,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,166,0 ,0 ,0 ,0 ,0 ,0
db 0 ,238,238,238,238,0 ,0 ,0 ,0 ,0
db 238,238,238,238,238,238,0 ,0 ,0 ,0
db 238,238,238,238,238,238,0 ,0 ,0 ,0
db 239,238,238,238,238,239,0 ,0 ,0 ,0
db 0 ,239,239,239,239,0 ,0 ,0 ,0 ,0
GUIIconDataComboFrame:
db 0 ,0 ,0 ,0 ,58 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,0 ,56 ,46 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,0 ,54 ,44 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,52 ,0 ,42 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,50 ,40 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,48 ,38 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,46 ,36 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,44 ,0 ,34 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,42 ,32 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,40 ,32 ,0 ,0 ,0 ,0 ,0 ,0
GUIIconDataComboSecond:
db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,51 ,45 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,51 ,45 ,0 ,0 ,0 ,0 ,0 ,0
db 0 ,54 ,52 ,48 ,46 ,0 ,0 ,0 ,0 ,0
db 53 ,46 ,50 ,50 ,48 ,45 ,0 ,0 ,0 ,0
db 52 ,50 ,45 ,48 ,46 ,44 ,0 ,0 ,0 ,0
db 51 ,50 ,50 ,46 ,50 ,43 ,0 ,0 ,0 ,0
db 50 ,50 ,50 ,50 ,50 ,42 ,0 ,0 ,0 ,0
db 0 ,48 ,46 ,44 ,42 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
SECTION .text
DisplayGUIAddOns:
GUIDrawWindowBox 17,GUIAddOnsDisp
sub byte[GUItextcolor],15
GUIOuttextwin2 17,21,18,GUIAddOnText1
GUIOuttextwin2 17,21,28,GUIAddOnText2
GUIOuttextwin2 17,21,38,GUIAddOnText3
GUIOuttextwin2 17,21,48,GUIAddOnText4
GUIOuttextwin2 17,21,58,GUIAddOnText5
GUIOuttextwin2 17,10,78,GUIAddOnText6
GUIOuttextwin2 17,21,88,GUIAddOnText7
GUIOuttextwin2 17,71,88,GUIAddOnText8
GUIOuttextwin2 17,121,88,GUIAddOnText9
GUIOuttextwin2 17,21,98,GUIAddOnTextA
GUIOuttextwin2 17,71,98,GUIAddOnTextB
GUIOuttextwin2 17,121,98,GUIAddOnTextC
add byte[GUItextcolor],15
GUIOuttextwin2 17,20,17,GUIAddOnText1
GUIOuttextwin2 17,20,27,GUIAddOnText2
GUIOuttextwin2 17,20,37,GUIAddOnText3
GUIOuttextwin2 17,20,47,GUIAddOnText4
GUIOuttextwin2 17,20,57,GUIAddOnText5
GUIOuttextwin2 17,9,77,GUIAddOnText6
GUIOuttextwin2 17,20,87,GUIAddOnText7
GUIOuttextwin2 17,70,87,GUIAddOnText8
GUIOuttextwin2 17,120,87,GUIAddOnText9
GUIOuttextwin2 17,20,97,GUIAddOnTextA
GUIOuttextwin2 17,70,97,GUIAddOnTextB
GUIOuttextwin2 17,120,97,GUIAddOnTextC
GUIDisplayButtonHole 17,9,15,byte[snesmouse],0
GUIDisplayButtonHole 17,9,25,byte[snesmouse],1
GUIDisplayButtonHole 17,9,35,byte[snesmouse],2
GUIDisplayButtonHole 17,9,45,byte[snesmouse],3
GUIDisplayButtonHole 17,9,55,byte[snesmouse],4
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip1],0
je .nodip1
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip1
GUIDisplayIconWin 17,9,83,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip2],0
je .nodip2
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip2
GUIDisplayIconWin 17,59,83,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip3],0
je .nodip3
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip3
GUIDisplayIconWin 17,109,83,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip4],0
je .nodip4
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip4
GUIDisplayIconWin 17,9,93,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip5],0
je .nodip5
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip5
GUIDisplayIconWin 17,59,93,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[nssdip6],0
je .nodip6
mov dword[GUITemp],GUIIconDataCheckBoxC
.nodip6
GUIDisplayIconWin 17,109,93,[GUITemp]
ret
SECTION .data
GUIAddOnText1 db 'NONE',0
GUIAddOnText2 db 'SNES MOUSE AT PORT #1',0
GUIAddOnText3 db 'SNES MOUSE AT PORT #2',0
GUIAddOnText4 db 'SUPER SCOPE',0
GUIAddOnText5 db 'LETHAL ENFORCER GUN',0
GUIAddOnText6 db 'SUPER SYSTEM',0
GUIAddOnText7 db 'DIP 1',0
GUIAddOnText8 db 'DIP 2',0
GUIAddOnText9 db 'DIP 3',0
GUIAddOnTextA db 'DIP 4',0
GUIAddOnTextB db 'DIP 5',0
GUIAddOnTextC db 'DIP 6',0
SECTION .text
DisplayGUIChip:
GUIDrawWindowBox 18,GUIChipConfigDisp
ret
SECTION .data
SECTION .text
DisplayGUIPaths:
GUIDrawWindowBox 19,GUIPathsDisp
ret
SECTION .data
;General data
GUILoadDisp db 'LOAD GAME',0
GUIResetDisp db 'RESET GAME',0
GUIStateSelDisp db 'STATE SELECT',0
GUIInputDisp db 'INPUT DEVICE',0
GUIOptionDisp db 'OPTIONS',0
GUISoundDisp db 'SOUND CONFIG',0
GUIVideoDisp db 'VIDEO CONFIG',0
GUICheatDisp db 'CHEAT',0
GUISearchDisp db 'CHEAT SEARCH',0
GUINetDisp db 'REMOTE',0,0,0,0,0,0,0,0,0
GUIGameDisp db 'GAME KEYS',0
GUIGUIDisp db 'GUI OPTIONS',0
GUIAboutDisp db 'ABOUT',0
GUIMovieDisp db 'MOVIE OPTIONS',0
GUIStatesDisp db 'STATE CONFIRM',0
GUIComboDisp db 'KEY COMBINATION EDITOR',0
GUIAddOnsDisp db 'ADD-ON SELECTOR',0
GUIChipConfigDisp db 'CONFIGURE CHIPS',0
GUIPathsDisp db 'SETUP PATHS',0
SECTION .bss
GUIItemBoxColor resd 1
TextColorSp resd 1
SECTION .data
NEWSYM GUIMenuItem, db 'GAME ',0
db 'CONFIG',0
db 'CHEAT ',0
db 'NETPLAY',0
db 'MISC ',0
db 25,0
SECTION .text