:-)Июнь 2004. Татьяна

Всё! Блок прокрутки данных работает!

Всё! Блок прокрутки данных работает!
Теперь только алгоритм...

mov eax, [(t SoundBufInfo ebx).position]

cmp eax, [(t SoundBufInfo ebx).present]
jnc @@load_all_start

mov eax, [(t SoundBufInfo ebx).present]

or eax, eax
jz @@load_all_start ; первый запуск

sub eax, [(t SoundBufInfo ebx).position]
jz @@load_all_start ;!!

mov [(t SoundBufInfo ebx).present], eax ; = данные сдвигать и они будут в
; начале
;--- сдвигаю остаточные данные в начало
mov esi, edi
add esi, [(t SoundBufInfo ebx).position]
test al, 11b
jnz @@m6_0
shr eax, 2
xchg ecx, eax
rep movsd
jmp @@m6_1

@@m6_0:
xchg ecx, eax
rep movsb
@@m6_1:
;---
mov eax, [(t SoundBufInfo ebx).present]
sub [@@Len], eax ; загружать остаток
jmp @@load_all_start_0

@@load_all_start:
sub eax, eax
mov [(t SoundBufInfo ebx).present], eax
@@load_all_start_0:
sub eax, eax
mov [(t SoundBufInfo ebx).position], eax
@@load_all:

mov edi, [(t SoundBufInfo ebx).mem]
add edi, [(t SoundBufInfo ebx).position]
add edi, [(t SoundBufInfo ebx).present]

pusha
Call BASS_ChannelGetPosition, [@@hStream]

Call _wsprintfA C,ofs b0,ofs szb0, edx, eax

Call SetDlgItemText, [hdlgMain], ide_Main_NumberOfHills, ofs b0
popa

Call BASS_ChannelGetData, [@@hStream], edi, [@@Len]

cmp eax, -1
jz @@exitErr
;---
add eax, [(t SoundBufInfo ebx).present]
mov [(t SoundBufInfo ebx).present], eax

Comments (4):

  • Под кат.
  • Однозначно, под кат!!!