📄 gui.asm
字号:
mov bl,0 out dx,al inc dx.loope mov al,bl add al,[GUIRAdd] mov ah,al add al,al add al,ah shr al,2 out dx,al mov al,bl add al,[GUIGAdd] mov ah,al add al,al add al,ah shr al,2 out dx,al mov al,bl add al,[GUIBAdd] mov ah,al add al,al add al,ah shr al,2 out dx,al inc bl cmp bl,32 jne .loope ; 0,10,31 mov al,[GUITRAdd] mov [TRVal],al mov al,[GUITGAdd] mov [TGVal],al mov al,[GUITBAdd] mov [TBVal],al mov ax,[TRVal] inc ax shr ax,3 mov [TRVali],ax shl ax,3 add [TRVal],ax mov ax,[TGVal] inc ax shr ax,3 mov [TGVali],ax shl ax,3 add [TGVal],ax mov ax,[TBVal] inc ax shr ax,3 mov [TBVali],ax shl ax,3 add [TBVal],ax GUIPal 64,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 65,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 66,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 67,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 68,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 69,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 70,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 71,[TRVal],[TGVal],[TBVal] GUIPal 72,40,0,20 GUIPal 73,34,0,21 GUIPal 80,0,10,28 GUIPal 81,0,10,27 GUIPal 82,0,10,25 GUIPal 83,0,09,24 GUIPal 84,0,08,22 GUIPal 85,0,07,20 GUIPal 86,0,06,18 GUIPal 87,0,05,15 GUIPal 88,20,0,10 GUIPal 89,17,0,10 ; Orange Scale mov dx,03C8h mov al,128 mov cl,20 out dx,al mov bh,0 mov ah,0 inc dx.loopf add bh,2 inc ah mov al,63 out dx,al mov al,bh out dx,al mov al,ah out dx,al dec cl jnz .loopf ; Blue scale = 148 .. 167 mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 GUIPal 152,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 151,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 150,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 149,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 148,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 call DecPalVal call DecPalVal GUIPal 157,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 156,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 155,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 154,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 153,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 call DecPalVal call DecPalVal call DecPalVal call DecPalVal GUIPal 162,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 161,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 160,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 159,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 158,[TRVal],[TGVal],[TBVal] GUIPal 163,40,40,00 GUIPal 164,30,30,00 GUIPal 165,50,00,00 GUIPal 166,35,00,00 GUIPal 167,00,00,00 ; Blue scale shadow mov al,[GUIWRAdd] mov [TRVal],al mov al,[GUIWGAdd] mov [TGVal],al mov al,[GUIWBAdd] mov [TBVal],al mov byte[TRVali],2 mov byte[TGVali],2 mov byte[TBVali],2 GUIPal 172,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 171,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 170,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 169,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 168,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] mov [TRVal],al mov al,[GUIWGAdd] mov [TGVal],al mov al,[GUIWBAdd] mov [TBVal],al mov byte[TRVali],2 mov byte[TGVali],2 mov byte[TBVali],2 call DecPalVal call DecPalVal GUIPal 177,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 176,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 175,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 174,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 173,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] mov [TRVal],al mov al,[GUIWGAdd] mov [TGVal],al mov al,[GUIWBAdd] mov [TBVal],al mov byte[TRVali],2 mov byte[TGVali],2 mov byte[TBVali],2 call DecPalVal call DecPalVal call DecPalVal call DecPalVal GUIPal 182,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 181,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 180,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 179,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal 178,[TRVal],[TGVal],[TBVal] GUIPal 183,20,20,00 GUIPal 184,15,15,00 GUIPal 185,25,00,00 GUIPal 186,17,00,00 GUIPal 187,00,00,00 ; gray scale2 = 189 .. 220 mov dx,03C8h mov al,189 mov bl,0 out dx,al inc dx.loopi mov al,bl add al,al mov ah,bl shr ah,1 sub al,ah out dx,al out dx,al add al,ah out dx,al inc bl cmp bl,64 jne .loopi GUIPal 221,00,55,00 GUIPal 222,00,45,00 GUIPal 223,00,25,00 GUIPal 224,40,0,20 GUIPal 225,32,0,15 GUIPal 226,20,0,10 GUIPal 227,16,0,07 GUIPal 228,45,45,50 GUIPal 229,40,40,45 GUIPal 230,35,35,40 GUIPal 231,30,30,35 GUIPal 232,35,15,15 GUIPal 233,50,12,60 GUIPal 234,30,14,60 cmp byte[GUIPalConv],0 je .convert ret.convert mov byte[GUIPalConv],1 ; Convert Image data to Gray Scale ; Create Palette Table call GUIconvpal ; Convert Current Image in Buffer mov esi,[vidbuffer] mov ecx,288*240 xor eax,eax.next mov al,[esi] mov bl,[SubPalTable+eax] mov [esi],bl inc esi dec ecx jnz .next retSECTION .bssNEWSYM GUICPC, resw 256SECTION .text%macro GUIPal16b 4 mov ax,%2 shr ax,1 shl ax,11 mov bx,%3 shl bx,5 or ax,bx mov bx,%4 shr bx,1 or ax,bx mov [GUICPC+%1*2],ax%endmacroDecPalVal: mov ax,[TRVali] sub word[TRVal],ax mov ax,[TGVali] sub word[TGVal],ax mov ax,[TBVali] sub word[TBVal],ax test word[TRVal],8000h jz .notnegr mov word[TRVal],0.notnegr test word[TGVal],8000h jz .notnegg mov word[TGVal],0.notnegg test word[TBVal],8000h jz .notnegb mov word[TBVal],0.notnegb retGUISetPal16: ; set palette ; Fixed Color Scale = 0 .. 31 mov word[GUICPC],0 inc al xor ebx,ebx mov bl,1.loopd xor ecx,ecx mov cl,bl add cl,[GUIRAdd] shr cl,1 shl ecx,11 xor eax,eax mov al,bl add al,[GUIGAdd] shl eax,5 or ecx,eax xor eax,eax mov al,bl add al,[GUIBAdd] shr eax,1 or ecx,eax mov [GUICPC+ebx*2],cx inc bl cmp bl,32 jne .loopd ; gray scale = 32 .. 63 mov bl,32 mov al,32.loopc mov al,bl add al,al xor ecx,ecx mov cl,al shr ecx,1 shl ecx,11 xor edx,edx mov dl,al shl edx,5 or ecx,edx xor edx,edx mov dl,al shr edx,1 or ecx,edx mov [GUICPC+ebx*2],cx inc bl cmp bl,64 jne .loopc ; shadow = 96 .. 127 xor ebx,ebx.loope xor ecx,ecx mov al,bl add al,[GUIRAdd] mov ah,al add al,al add al,ah shr al,2 shr al,1 or cl,al shl ecx,6 mov al,bl add al,[GUIGAdd] mov ah,al add al,al add al,ah shr al,2 or cl,al shl ecx,5 mov al,bl add al,[GUIBAdd] mov ah,al add al,al add al,ah shr al,2 shr al,1 or cl,al mov [GUICPC+ebx*2+96*2],cx inc bl cmp bl,32 jne .loope ; 0,10,31 mov al,[GUITRAdd] mov [TRVal],al mov al,[GUITGAdd] mov [TGVal],al mov al,[GUITBAdd] mov [TBVal],al mov ax,[TRVal] inc ax shr ax,3 mov [TRVali],ax shl ax,3 add [TRVal],ax mov ax,[TGVal] inc ax shr ax,3 mov [TGVali],ax shl ax,3 add [TGVal],ax mov ax,[TBVal] inc ax shr ax,3 mov [TBVali],ax shl ax,3 add [TBVal],ax GUIPal16b 64,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 65,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 66,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 67,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 68,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 69,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 70,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 71,[TRVal],[TGVal],[TBVal] GUIPal16b 72,40,0,20 GUIPal16b 73,34,0,21 GUIPal16b 80,0,10,28 GUIPal16b 81,0,10,27 GUIPal16b 82,0,10,25 GUIPal16b 83,0,09,24 GUIPal16b 84,0,08,22 GUIPal16b 85,0,07,20 GUIPal16b 86,0,06,18 GUIPal16b 87,0,05,15 GUIPal16b 88,20,0,10 GUIPal16b 89,17,0,10 ; Orange Scale mov cl,20 mov bh,0 mov ah,0 inc dx mov esi,128.loopf add bh,2 inc ah mov edx,1Fh << 6 or dl,bh shl edx,5 mov al,ah shr al,1 or dl,al mov [GUICPC+esi*2],dx inc esi dec cl jnz .loopf ; Blue scale = 148 .. 167 mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 GUIPal16b 152,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 151,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 150,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 149,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 148,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 mov al,[TRVal] shr al,2 sub [TRVal],al mov al,[TGVal] shr al,2 sub [TGVal],al mov al,[TBVal] shr al,2 sub [TBVal],al GUIPal16b 157,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 156,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 155,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 154,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 153,[TRVal],[TGVal],[TBVal] mov al,[GUIWRAdd] add al,al mov [TRVal],al mov al,[GUIWGAdd] add al,al mov [TGVal],al mov al,[GUIWBAdd] add al,al mov [TBVal],al mov byte[TRVali],4 mov byte[TGVali],4 mov byte[TBVali],4 mov al,[TRVal] shr al,1 sub [TRVal],al mov al,[TGVal] shr al,1 sub [TGVal],al mov al,[TBVal] shr al,1 sub [TBVal],al GUIPal16b 162,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 161,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 160,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 159,[TRVal],[TGVal],[TBVal] call DecPalVal GUIPal16b 158,[TRVal],[TGVal],[TBVal] GUIPal16b 163,40,40,00 GUIPal16b 164,30,30,00 GUIPal16b 165,50
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -