mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-19 04:34:51 -04:00
github publish
This commit is contained in:
commit
506e23bf32
542 changed files with 120675 additions and 0 deletions
318
VIDEO/ANIPACK.ASM
Normal file
318
VIDEO/ANIPACK.ASM
Normal file
|
@ -0,0 +1,318 @@
|
|||
.model small
|
||||
.386
|
||||
;16 bit line (de)comprimator
|
||||
;
|
||||
DGROUP group _DATA
|
||||
|
||||
extern _anim_line_len:dword
|
||||
|
||||
|
||||
_TEXT segment byte public 'CODE' use32
|
||||
assume CS:_TEXT
|
||||
assume DS:DGROUP
|
||||
|
||||
|
||||
|
||||
save_line1 macro reg1,reg2
|
||||
shr reg1,8
|
||||
rcr reg2,1
|
||||
shr reg1,8
|
||||
rcr reg2,1
|
||||
shr reg1,8
|
||||
rcr reg2,1
|
||||
shr reg1,8
|
||||
rcr reg2,1
|
||||
endm
|
||||
|
||||
save_linex macro reg1,reg2,rols
|
||||
shrd reg2,reg1,rols
|
||||
shr reg1,8
|
||||
shrd reg2,reg1,rols
|
||||
shr reg1,8
|
||||
shrd reg2,reg1,rols
|
||||
shr reg1,8
|
||||
shrd reg2,reg1,rols
|
||||
endm
|
||||
|
||||
|
||||
public save_1bit_ ;ESI source
|
||||
;EDI target
|
||||
;vraci EDI ukazatel na konce;
|
||||
save_1bit_:
|
||||
mov cl,8
|
||||
s1b1: lodsd
|
||||
save_linex eax,ebx,1
|
||||
dec cl
|
||||
jnz s1b1
|
||||
mov eax,ebx
|
||||
stosd
|
||||
mov cl,8
|
||||
s1b2: lodsd
|
||||
save_linex eax,ebx,1
|
||||
dec cl
|
||||
jnz s1b2
|
||||
mov eax,ebx
|
||||
stosd
|
||||
ret
|
||||
|
||||
public save_2bit_
|
||||
save_2bit_:
|
||||
mov ch,4
|
||||
c2b11: mov cl,4
|
||||
c2b12: lodsd
|
||||
save_linex eax,ebx,2
|
||||
dec cl
|
||||
jnz c2b12
|
||||
mov eax,ebx
|
||||
stosd
|
||||
dec ch
|
||||
jnz c2b11
|
||||
ret
|
||||
|
||||
public save_3bit_
|
||||
save_3bit_:
|
||||
mov ch,8
|
||||
c3b11: mov cl,2
|
||||
c3b12: lodsd
|
||||
save_linex eax,ebx,3
|
||||
dec cl
|
||||
jnz c3b12
|
||||
mov eax,ebx
|
||||
shr eax,8
|
||||
stosd
|
||||
dec edi
|
||||
dec ch
|
||||
jnz c3b11
|
||||
ret
|
||||
|
||||
public save_4bit_
|
||||
save_4bit_:
|
||||
mov ch,8
|
||||
c4b11: mov cl,2
|
||||
c4b12: lodsd
|
||||
save_linex eax,ebx,4
|
||||
dec cl
|
||||
jnz c4b12
|
||||
mov eax,ebx
|
||||
stosd
|
||||
dec ch
|
||||
jnz c4b11
|
||||
ret
|
||||
|
||||
|
||||
public load_1bit_ ;ESI - Source
|
||||
;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_1bit_ :
|
||||
mov ch,8
|
||||
l1b1: mov dl,[esi]
|
||||
inc esi
|
||||
mov cl,8
|
||||
l1b2: movzx eax,dl
|
||||
and eax,1
|
||||
mov eax,[ebx+eax*2]
|
||||
test eax,8000h
|
||||
jnz short l1b1s
|
||||
mov [edi],ax
|
||||
l1b1s: add edi,2
|
||||
shr dl,1
|
||||
dec cl
|
||||
jnz l1b2
|
||||
mov eax,_anim_line_len
|
||||
sub eax,16
|
||||
add edi,eax
|
||||
dec ch
|
||||
jnz l1b1
|
||||
ret
|
||||
|
||||
public load_2bit_ ;ESI - Source
|
||||
;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_2bit_:
|
||||
mov ch,8
|
||||
l2b1: mov dx,[esi]
|
||||
add esi,2
|
||||
mov cl,8
|
||||
l2b2: mov eax,edx
|
||||
and eax,3
|
||||
mov eax,[ebx+eax*2]
|
||||
test eax,8000h
|
||||
jnz short l2b1s
|
||||
mov [edi],ax
|
||||
l2b1s: add edi,2
|
||||
shr edx,2
|
||||
dec cl
|
||||
jnz l2b2
|
||||
mov eax,_anim_line_len
|
||||
sub eax,16
|
||||
add edi,eax
|
||||
dec ch
|
||||
jnz l2b1
|
||||
ret
|
||||
|
||||
public load_3bit_ ;ESI - Source
|
||||
;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_3bit_:
|
||||
mov ch,8
|
||||
l3b1: mov edx,[esi]
|
||||
add esi,3
|
||||
mov cl,8
|
||||
l3b2: mov eax,edx
|
||||
and eax,7
|
||||
mov eax,[ebx+eax*2]
|
||||
test eax,8000h
|
||||
jnz short l3b1s
|
||||
mov [edi],ax
|
||||
l3b1s: add edi,2
|
||||
shr edx,3
|
||||
dec cl
|
||||
jnz l3b2
|
||||
mov eax,_anim_line_len
|
||||
sub eax,16
|
||||
add edi,eax
|
||||
dec ch
|
||||
jnz l3b1
|
||||
ret
|
||||
|
||||
public load_4bit_ ;ESI - Source
|
||||
;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_4bit_:
|
||||
mov ch,8
|
||||
l4b1: mov edx,[esi]
|
||||
add esi,4
|
||||
mov cl,8
|
||||
l4b2: mov eax,edx
|
||||
and eax,15
|
||||
mov eax,[ebx+eax*2]
|
||||
test eax,8000h
|
||||
jnz short l4b1s
|
||||
mov [edi],ax
|
||||
l4b1s: add edi,2
|
||||
shr edx,4
|
||||
dec cl
|
||||
jnz l4b2
|
||||
mov eax,_anim_line_len
|
||||
sub eax,16
|
||||
add edi,eax
|
||||
dec ch
|
||||
jnz l4b1
|
||||
ret
|
||||
|
||||
public load_8bit_ ;ESI - Source
|
||||
;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_8bit_:
|
||||
mov ch,8
|
||||
l8b1: mov cl,8
|
||||
l8b2: lodsb
|
||||
movzx eax,al
|
||||
mov eax,[ebx+eax*2]
|
||||
test eax,8000h
|
||||
jnz short l8b1s
|
||||
mov [edi],ax
|
||||
l8b1s: add edi,2
|
||||
dec cl
|
||||
jnz l8b2
|
||||
mov eax,_anim_line_len
|
||||
sub eax,16
|
||||
add edi,eax
|
||||
dec ch
|
||||
jnz l8b1
|
||||
ret
|
||||
|
||||
public load_0bit_ ;EDI - Target
|
||||
;EBX - Palette
|
||||
;anim_line_len - delka radky
|
||||
load_0bit_:
|
||||
movzx eax,word ptr[ebx]
|
||||
test eax,8000h
|
||||
jnz l0b1s
|
||||
mov ebx,eax
|
||||
shl ebx,16
|
||||
or eax,ebx
|
||||
mov ch,8
|
||||
l0b1: mov cl,4
|
||||
l0b2: stosd
|
||||
dec cl
|
||||
jnz l0b2
|
||||
mov edx,_anim_line_len
|
||||
sub edx,16
|
||||
add edi,edx
|
||||
dec ch
|
||||
jnz l0b1
|
||||
l0b1s: ret
|
||||
|
||||
|
||||
public display_interlaced_fused_lfb_
|
||||
;ESI buffer1
|
||||
;EBX buffer2
|
||||
;EDI screen
|
||||
|
||||
;vezme buffer 1 a sfuzuje s bufferem 2, predtim ovsem prepise buffer2 bufferem 1
|
||||
;pracuje s lfb
|
||||
display_interlaced_fused_lfb_:
|
||||
mov ecx,180
|
||||
dif_lp1:push ecx
|
||||
mov ecx,320
|
||||
dif_lp2:lodsd
|
||||
mov edx,eax
|
||||
xchg edx,[ebx]
|
||||
and eax,7bde7bdeh
|
||||
and edx,7bde7bdeh
|
||||
add eax,edx
|
||||
shr eax,1
|
||||
stosd
|
||||
add ebx,4
|
||||
dec ecx
|
||||
jnz dif_lp2
|
||||
pop ecx
|
||||
add edi,1280
|
||||
dec ecx
|
||||
jnz dif_lp1
|
||||
ret
|
||||
|
||||
extern mapvesaadr_:near
|
||||
|
||||
public display_interlaced_fused_bank_
|
||||
;ESI buffer1
|
||||
;EBX buffer2
|
||||
;EDI screen
|
||||
|
||||
;vezme buffer 1 a sfuzuje s bufferem 2, predtim ovsem prepise buffer2 bufferem 1
|
||||
;pracuje s lfb
|
||||
display_interlaced_fused_bank_:
|
||||
mov ecx,180
|
||||
difblp1:push ecx
|
||||
push edi
|
||||
call mapvesaadr_
|
||||
mov ecx,320
|
||||
difblp2:lodsd
|
||||
mov edx,eax
|
||||
xchg edx,[ebx]
|
||||
and eax,7bde7bdeh
|
||||
and edx,7bde7bdeh
|
||||
add eax,edx
|
||||
shr eax,1
|
||||
stosd
|
||||
add ebx,4
|
||||
dec ecx
|
||||
jnz difblp2
|
||||
pop edi
|
||||
pop ecx
|
||||
add edi,4096
|
||||
dec ecx
|
||||
jnz difblp1
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
_TEXT ends
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue