sysfont parser bugfix

git-svn-id: svn://kolibrios.org@2321 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Artem Jerdev (art_zh) 2011-11-28 21:26:53 +00:00
parent 7ab46af0a7
commit 9e4294fe02

View File

@ -209,104 +209,80 @@ parse_tick:
mov ch, byte[edx+ecx] ; orig. coords mov ch, byte[edx+ecx] ; orig. coords
pop edx pop edx
mov cl, dh mov cl, dh
and cl, 7 ; three rotation bits and cl, 7 ; three rotation bits
and edx, 0xFF and edx, 0xFF ; dl = gptick#
sub dl, 32 sub dl, 32
test dl, (sdsh_data.v5-sdsh_data.v1) cmp dl, (sdsh_data.v5-sdsh_data.v1)
jae .gptick.2 jae .gptick.2
.gptick.1: .gptick.1:
mov esi, sdsh_data.tick_table mov esi, sdsh_data.tick_table
add esi, edx ; the tickfield add esi, edx ; 1-byte tickgroups .v1-v4:
inc dh inc dh
sub dl, 2 ; .v1 sub dl, 2 ; .v1 : 2 ticks only (#32, 33)
jb .gptick.done jae @f
inc dh mov dl, dh
sub dl, 8 ; .v2 jmp .gptick.done
jb .gptick.done @@: inc dh
inc dh shr dl, 3 ; tickgroups .v2-v4 : 8 ticks each
sub dl, 8 ; .v3 add dl, dh
jb .gptick.done jmp .gptick.done
inc dh
jmp .gptick.done ; .v4
.gptick.2: .gptick.2:
sub dl, (sdsh_data.v5-sdsh_data.v1) sub dl, (sdsh_data.v5-sdsh_data.v1)
cmp dl, (sdsh_data.v9-sdsh_data.v5)
jae .gptick.3 jae .gptick.3
mov esi, sdsh_data.v5 mov esi, sdsh_data.v5
add esi, edx*2 ; 2-byte tickfield lea esi, [esi+edx*2] ; 2-byte tickgroups .v5-v8: 8 ticks each
mov dh, 5 mov dh, 5
sub dl, 8 ; .v5 shr dl, 3
jb .gptick.done add dl, dh
inc dh jmp .gptick.done
sub dl, 8 ; .v6
jb .gptick.done
inc dh
sub dl, 8 ; .v7
jb .gptick.done
inc dh
jmp .gptick.done ; .v8
.gptick.3: .gptick.3:
sub dl, (sdsh_data.v9-sdsh_data.v5) sub dl, (sdsh_data.v9-sdsh_data.v5)
cmp dl, (sdsh_data.v13-sdsh_data.v9)
jae .gptick.4 jae .gptick.4
mov esi, sdsh_data.v9 mov esi, sdsh_data.v9
lea esi,[esi+edx*2+edx] ; 3-byte tickfield lea esi,[esi+edx*2+edx] ; 3-byte tickgroups .v9-12: 4 ticks each
mov dh, 9 mov dh, 9
sub dl, 4 ; .v9 shr dl, 2
jb .gptick.done add dl, dh
inc dh jmp .gptick.done
sub dl, 4 ; .v10
jb .gptick.done
inc dh
sub dl, 4 ; .v11
jb .gptick.done
inc dh
jmp .gptick.done ; .v12
.gptick.4: .gptick.4:
sub dl, (sdsh_data.v13-sdsh_data.v9) sub dl, (sdsh_data.v13-sdsh_data.v9)
jae .gptick.5 cmp dl, 16
jae .exit
mov esi, sdsh_data.v13 mov esi, sdsh_data.v13
lea esi,[esi+edx*2+edx] ; 3-byte tickfield lea esi,[esi+edx*4] ; 4-byte tickgroups .v13-16: 4 ticks each
mov dh, 13 mov dh, 13
sub dl, 4 ; .v13 shr dl, 2
jb .gptick.done add dl, dh
inc dh
sub dl, 4 ; .v14
jb .gptick.done
inc dh
sub dl, 4 ; .v15
jb .gptick.done
inc dh
jmp .gptick.done ; .v16
.gptick.unknown:
jmp .exit
.gptick.done: .gptick.done:
mov dl, dh ; dl = numvert mov dh, ch ; dh = orig.XY; dl = numvert
mov dh, ch ; dh = orig.xy jmp .draw ; cl = rotation
call draw_tick
jmp .exit
.cstick: .cstick:
and cl, 4 and cl, 4
shr cl, 2 ; only one rotational bit shr cl, 2 ; only one rotational bit
and dl, 3 and dl, 3
inc dl
dec dl dec dl
jb .cstick.0 jz .cstick.0
mov esi, sdsh_data.cs2 ; the square
dec dl dec dl
jb .cstick.1 jnz @f
dec dl mov dl, 6
jb .cstick.2 jz .cstick.1
@@: dec dl
jz .cstick.2
.cstick.3: .cstick.3:
mov esi, sdsh_data.cs3 ; 12pix-ring mov esi, sdsh_data.cs3 ; 12pix-ring
mov dl, 10 mov dl, 10
jmp .draw jmp .draw
.cstick.2: .cstick.2:
mov dl, 7 mov dl, 7
jmp .draw
.cstick.1: .cstick.1:
mov dl, 6 mov esi, sdsh_data.cs2 ; the square
jmp .draw jmp .draw
.cstick.3: .cstick.0:
mov esi, sdsh_data.cs0 ; 4pix-square mov esi, sdsh_data.cs0 ; 4pix-square
mov dl, 3 mov dl, 3
jmp .draw jmp .draw