Problem with comparison.
/trunk/gui/font.inc |
0,0 → 1,225 |
align 4 |
dtext: |
; eax x & y |
; ebx font ( 0xX0000000 ) & color ( 0x00RRGGBB ) |
; ecx start of text |
; edx length |
; edi 1 force |
|
test ebx,0x10000000 |
jnz dtext2 |
|
pushad |
|
mov esi, edx |
and esi, 0xff |
test esi, esi ; zero length ? |
jnz @f |
popad |
ret |
@@: |
align 4 |
.letnew: |
|
push eax ecx edx |
movzx ebx,ax |
shr eax,16 |
movzx edx,byte [ecx] |
mov ecx,[esp+3*4+32-16] |
call drawletter |
pop edx ecx eax |
|
add eax,6*65536 |
|
inc ecx |
dec edx |
jnz .letnew |
|
popad |
ret |
|
align 4 |
drawletter: |
|
; eax x |
; ebx y |
; ecx color |
; edx letter |
; esi shl size |
; edi force |
|
pushad |
call [disable_mouse] |
xor eax, eax |
xor ebx, ebx ; 0x37000+eax+ebx*8 |
inc esi |
align 4 |
chc: |
|
push eax |
push ebx |
|
mov edx,ebx |
shl edx,3 |
add edx,eax |
add edx,0x37000+8 |
mov ecx,[esp+32-12+8] |
imul ecx,8*10 |
add edx,ecx |
cmp [edx],byte 'o' |
jnz .nopix |
mov eax,[esp+4] |
mov ebx,[esp+0] |
add eax,[esp+32+2*4-4] |
add ebx,[esp+32+2*4-16] |
mov ecx,[esp+32+2*4-8] |
;;;call [disable_mouse] |
call [putpixel] |
.nopix: |
pop ebx |
pop eax |
|
inc eax |
cmp eax,5 ; ebp |
jne chc |
|
xor eax, eax |
|
inc ebx |
cmp ebx,9 ; ebp |
jne chc |
|
popad |
ret |
|
|
dtext2: |
|
; eax x & y |
; ebx color |
; ecx start of text |
; edx length |
; edi 1 force |
|
pushad |
|
mov esi,edx |
and esi,0xff |
test esi,esi ; zero length ? |
jnz @f |
popad |
ret |
@@: |
|
align 4 |
letnew2: |
|
push eax |
push ecx |
push edx |
movzx ebx,ax |
shr eax,16 |
movzx edx,byte [ecx] |
mov ecx,[esp+3*4+32-16] |
call drawletter2 |
pop edx |
pop ecx |
pop eax |
|
push edx |
movzx edx,byte [ecx] |
imul edx,10*10 |
add edx,0x30000 |
cmp [edx+6],byte ' ' |
jne nocharadd8 |
add eax,8*65536 |
jmp charaddok |
nocharadd8: |
movzx edx,byte [edx+6] |
sub edx,47 |
shl edx,16 |
add eax,edx |
charaddok: |
pop edx |
|
inc ecx |
dec edx |
jnz letnew2 |
|
popad |
ret |
|
align 4 |
drawletter2: |
|
; eax x |
; ebx y |
; ecx color |
; edx letter |
; esi shl size |
; edi force |
|
pushad |
call [disable_mouse] |
xor eax, eax |
xor ebx, ebx ; +eax+ebx*8 |
inc esi |
|
align 4 |
chc2: |
|
push eax |
push ebx |
|
; cmp esi,1 |
; je noldiv |
; xor edx,edx |
; div esi |
; push eax |
; xor edx,edx |
; mov eax,ebx |
; div esi |
; mov ebx,eax |
; pop eax |
; noldiv: |
|
mov edx,ebx |
;shl edx,3 |
imul edx,10 |
add edx,eax |
add edx,0x30000+8+2 |
mov ecx,[esp+32-12+8] |
;shl ecx,6 |
imul ecx,10*10 |
add edx,ecx |
cmp [edx],byte 'o' |
jnz nopix2 |
mov eax,[esp+4] |
mov ebx,[esp+0] |
add eax,[esp+32+2*4-4] |
add ebx,[esp+32+2*4-16] |
mov ecx,[esp+32+2*4-8] |
;;;call [disable_mouse] |
call [putpixel] |
nopix2: |
pop ebx |
pop eax |
|
;mov ebp,7 |
;imul ebp,esi |
|
inc eax |
cmp eax,7 ;ebp |
jnz chc2 |
|
xor eax, eax |
|
;mov ebp,9 |
;imul ebp,esi |
|
inc ebx |
cmp ebx,9 ; ebp |
jnz chc2 |
|
popad |
ret |