📄 procvid.asm
字号:
ror edx,16
mov edi,FontData
xor ebx,ebx
mov bl,al
shl ebx,3
add edi,ebx
call OutputText16b
pop ecx
pop edx
pop eax
pop esi
pop edi
ret
NEWSYM textcolor, db 128
NEWSYM textcolor16b, dw 0FFFFh
NEWSYM outputchar5x5
push edi
push esi
push eax
mov edi,GUIFontData
xor ebx,ebx
mov bl,al
shl ebx,2
add edi,ebx
xor ebx,ebx
mov bl,al
add edi,ebx
mov cl,5
.loopa
mov ah,[edi]
mov ch,5
.loopb
test ah,80h
jz .nowrite
mov al,[textcolor]
mov byte[esi],al
.nowrite
shl ah,1
inc esi
dec ch
jnz .loopb
add esi,283
inc edi
dec cl
jnz .loopa
pop eax
pop esi
pop edi
ret
NEWSYM outputchar16b5x5
push edi
push esi
push eax
mov edi,GUIFontData
xor ebx,ebx
mov bl,al
shl ebx,2
add edi,ebx
xor ebx,ebx
mov bl,al
add edi,ebx
mov cl,5
.loopa
mov ah,[edi]
mov ch,5
.loopb
test ah,80h
jz .nowrite
push eax
mov ax,[textcolor16b]
mov word[esi],ax
mov word[esi+75036*4],ax
pop eax
.nowrite
shl ah,1
add esi,2
dec ch
jnz .loopb
add esi,283*2
inc edi
dec cl
jnz .loopa
pop eax
pop esi
pop edi
ret
NEWSYM outputchar16b5x52
push edi
push esi
push eax
mov edi,GUIFontData
xor ebx,ebx
mov bl,al
shl ebx,2
add edi,ebx
xor ebx,ebx
mov bl,al
add edi,ebx
mov word[esi-288*2],0
mov word[esi+2-288*2],0
mov word[esi+4-288*2],0
mov word[esi+6-288*2],0
mov word[esi+8-288*2],0
mov word[esi+10-288*2],0
mov word[esi-288*2+75036*4],0
mov word[esi+2-288*2+75036*4],0
mov word[esi+4-288*2+75036*4],0
mov word[esi+6-288*2+75036*4],0
mov word[esi+8-288*2+75036*4],0
mov word[esi+10-288*2+75036*4],0
mov cl,5
.loopa
mov ah,[edi]
mov ch,5
.loopb
mov word[esi],0
mov word[esi+2],0
mov word[esi+75036*4],0
mov word[esi+2+75036*4],0
test ah,80h
jz .nowrite
push eax
mov ax,[textcolor16b]
mov word[esi],ax
mov word[esi+75036*4],ax
pop eax
.nowrite
shl ah,1
add esi,2
dec ch
jnz .loopb
add esi,283*2
inc edi
dec cl
jnz .loopa
mov word[esi],0
mov word[esi+2],0
mov word[esi+4],0
mov word[esi+6],0
mov word[esi+8],0
mov word[esi+10],0
mov word[esi+75036*4],0
mov word[esi+2+75036*4],0
mov word[esi+4+75036*4],0
mov word[esi+6+75036*4],0
mov word[esi+8+75036*4],0
mov word[esi+10+75036*4],0
pop eax
pop esi
pop edi
ret
;*******************************************************
; Output Graphic String Outputs String from edi to esi
;*******************************************************
NEWSYM OutputGraphicString
cmp byte[cbitmode],1
je .do16b
.no16bit
xor eax,eax
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
inc edi
jmp .nextstr
.nomore
ret
.do16b
sub esi,[vidbuffer]
shl esi,1
add esi,[vidbuffer]
cmp byte[textcolor],128
jne .no128
mov word[textcolor16b],0FFFFh
.no128
cmp byte[textcolor],129
jne .no129
mov word[textcolor16b],0
.no129
cmp byte[textcolor],130
jne .no130
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,20
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no130
; Color #131, Red
cmp byte[textcolor],131
jne .no131
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,22
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,5
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,5
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no131
jmp OutputGraphicString16b
NEWSYM OutputGraphicString16b
xor eax,eax
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
inc edi
jmp .nextstr
.nomore
ret
NEWSYM OutputGraphicString5x5
cmp byte[cbitmode],1
je .do16b
.no16bit
xor eax,eax
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar5x5
add esi,6
inc edi
jmp .nextstr
.nomore
ret
.do16b
sub esi,[vidbuffer]
shl esi,1
add esi,[vidbuffer]
cmp byte[textcolor],128
jne .no128
mov word[textcolor16b],0FFFFh
.no128
cmp byte[textcolor],129
jne .no129
mov word[textcolor16b],0
.no129
cmp byte[textcolor],130
jne .no130
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,20
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no130
; Color #131, Red
cmp byte[textcolor],131
jne .no131
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,22
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,5
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,5
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no131
jmp OutputGraphicString16b5x5
NEWSYM OutputGraphicString16b5x5
xor eax,eax
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar16b5x5
add esi,12
inc edi
jmp .nextstr
.nomore
ret
NEWSYM OutputGraphicString16b5x52
xor eax,eax
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar16b5x52
add esi,12
inc edi
jmp .nextstr
.nomore
ret
NEWSYM OutputGraphicStringb
cmp byte[cbitmode],1
je near .do16b
xor eax,eax
cmp byte[edi-1],1
je .dir
cmp byte[edi-1],2
je near .drive
sub esi,8
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
inc edi
jmp .nextstr
.nomore
ret
.dir
sub esi,8
mov al,'<'
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
.nextstr2
mov al,[edi]
cmp al,0
je .nomore2
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
inc edi
jmp .nextstr2
.nomore2
mov al,'>'
mov al,[ASCII2Font+eax]
call outputchar
ret
.drive
sub esi,8
mov al,'['
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
.nextstr3
mov al,[edi]
cmp al,0
je .nomore3
mov al,[ASCII2Font+eax]
call outputchar
add esi,8
inc edi
jmp .nextstr3
.nomore3
mov al,']'
mov al,[ASCII2Font+eax]
call outputchar
ret
.do16b
sub esi,[vidbuffer]
shl esi,1
add esi,[vidbuffer]
cmp byte[textcolor],128
jne .no128
mov word[textcolor16b],0FFFFh
.no128
cmp byte[textcolor],129
jne .no129
mov word[textcolor16b],0
.no129
cmp byte[textcolor],130
jne .no130
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,20
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,20
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no130
; Color #131, Red
cmp byte[textcolor],131
jne .no131
xor ax,ax
xor bx,bx
mov cl,[vesa2_rpos]
mov bx,22
shl bx,cl
add ax,bx
mov cl,[vesa2_gpos]
mov bx,5
shl bx,cl
add ax,bx
mov cl,[vesa2_bpos]
mov bx,5
shl bx,cl
add ax,bx
mov word[textcolor16b],ax
.no131
NEWSYM OutputGraphicString16bb
xor eax,eax
cmp byte[edi-1],1
je .dir
cmp byte[edi-1],2
je near .drive
xor eax,eax
sub esi,16
.nextstr
mov al,[edi]
cmp al,0
je .nomore
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
inc edi
jmp .nextstr
.nomore
ret
.dir
sub esi,16
mov al,'<'
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
.nextstr2
mov al,[edi]
cmp al,0
je .nomore2
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
inc edi
jmp .nextstr2
.nomore2
mov al,'>'
mov al,[ASCII2Font+eax]
call outputchar16b
ret
.drive
sub esi,16
mov al,'['
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
.nextstr3
mov al,[edi]
cmp al,0
je .nomore3
mov al,[ASCII2Font+eax]
call outputchar16b
add esi,16
inc edi
jmp .nextstr3
.nomore3
mov al,']'
mov al,[ASCII2Font+eax]
call outputchar16b
ret
;*******************************************************
; Save Select Allows user to select save state slot
;*******************************************************
; For Save State
NEWSYM csounddisable, db 0
NEWSYM statefileloc, dd 0
newestfileloc db 0
newestfiledate dd 0
f3menuen db 0
PrevPictureVal db 0
CurPictureVal db 0
NEWSYM drawhline
.loop
mov byte[esi],al
inc esi
loop .loop
ret
NEWSYM drawhline16b
.loop
mov [esi],ax
add esi,2
loop .loop
ret
NEWSYM drawvline
.loop
mov byte[esi],al
add esi,288
loop .loop
ret
NEWSYM drawvline16b
.loop
mov [esi],ax
add esi,288*2
loop .loop
ret
%macro determinenewhelp 2
mov bl,%1
mov byte[fnamest+eax],%2
call DetermineNew
%endmacro
DetermineNew:
push eax
push ebx
mov edx,fnamest+1
call Open_File
jc near .nodraw
mov bx,ax
mov edx,fnamest+1
call Get_File_Date
%ifndef __LINUX__
shl edx,16
mov dx,cx
%endif
push edx
call Close_File
pop edx
pop ebx
pop eax
; date = edx, position = bl
cmp edx,[newestfiledate]
jbe .notlatest
mov [newestfiledate],edx
mov [newestfileloc],bl
.notlatest
ret
.nodraw
pop ebx
pop eax
ret
DetermineNewest:
mov dword[newestfiledate],0
mov byte[newestfileloc],0
%ifdef __LINUX__
determinenewhelp 0,'t'
%else
determinenewhelp 0,'T'
%endif
determinenewhelp 1,'1'
determinenewhelp 2,'2'
determinenewhelp 3,'3'
determinenewhelp 4,'4'
determinenewhelp 5,'5'
determinenewhelp 6,'6'
determinenewhelp 7,'7'
determinenewhelp 8,'8'
determinenewhelp 9,'9'
ret
NEWSYM CapturePicture
pushad
mov esi,[vidbuffer]
add esi,288*2+16*2
mov edi,PrevPicture
mov edx,56
.next
push esi
push edx
mov dx,1111011111011110b
cmp byte[newengen],0
je .noneweng2
cmp byte[nggposng],5
jne .noneweng2
mov dx,0111101111011110b
.noneweng2
mov ecx,64
.loop
mov ax,[esi]
mov bx,[esi+4]
and ax,dx
and bx,dx
shr ax,1
shr bx,1
add ax,bx
push ax
mov ax,[esi+288*2]
mov bx,[esi+4+288*2]
and ax,dx
and bx,dx
shr ax,1
shr bx,1
add bx,ax
pop ax
and ax,dx
and bx,dx
shr ax,1
shr bx,1
add ax,bx
mov [edi],ax
add esi,8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -