All pastes #817700 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-12-15 20:34 UTC
rendered paste body
dnm:
.select:
        mov [.table],esi
        cmp [boxed],1
        je .end
        cmp [leftedge],-1
        jne .noreset
        cmp [.drag?],1
        je @f
        cmp [.sel],0
        je @f
        mov esi,[.called]
        mov esi,[esi+item.call]
        call esi
@@:
        mov [.drag?],0
        mov [.sel],0
        jmp .end
.noreset:
        cmp [leftedge],1
        jne .drag
        mov [.drag?],0
        mov eax,[curs.x]
        mov ebx,[curs.y]
        mov [.xs],eax
        mov [.ys],ebx
        cmp [collision.sel],0
        je .itemtest
        mov esi,[collision.sel]
        mov [.count],esi
        mov [.current],collision.table
.next0:
        mov esi,[.current]
        mov esi,[esi]
        mov eax,[esi+item.x]
        mov ebx,[esi+item.y]
        mov ecx,[esi+item.xl]
        mov edx,[esi+item.yl]
        sub eax,[curs.x]
        jg @f
        add eax,ecx
        jle @f
        sub ebx,[curs.y]
        jg @f
        add ebx,edx
        jle @f
        mov [.sel],1
        mov [.called],esi
        jmp .end
@@:
        add [.current],4
        dec [.count]
        jne .next0
.nobox:
        mov [collision.sel],0
        mov [.sel],0
.itemtest:
        mov esi,[.table]
        mov eax,[esi]
        mov [.count],eax
        add esi,eax
        mov [.current],esi
.next1:
        mov esi,[.current]
        mov esi,[esi]
        mov eax,[esi+item.x]
        mov ebx,[esi+item.y]
        mov ecx,[esi+item.xl]
        mov edx,[esi+item.yl]
        sub eax,[curs.x]
        jg @f
        add eax,ecx
        jle @f
        sub ebx,[curs.y]
        jg @f
        add ebx,edx
        jle @f
        mov [.sel],esi
        mov [.called],esi
        mov [collision.sel],1
        mov [collision.table],esi

        jmp .end
@@:
        sub [.current],4
        sub [.count],4
        jne .next1
        mov [.sel],0
        jmp .end
.drag:
        cmp [.drag?],1
        je .move
        cmp [.sel],0
        je .end
        mov eax,[curs.x]
        sub eax,[.xs]
        jge @f
        neg eax
@@:
        cmp eax,[.hysteresis]
        jl @f
        mov [.drag?],1
        jmp .move
@@:
        mov eax,[curs.y]
        sub eax,[.ys]
        jge @f
        neg eax
@@:
        cmp eax,[.hysteresis]
        jl @f
        mov [.drag?],1
@@:
.move:
        cmp [.drag?],1
        jne .end
        mov eax,[delta.x]
        mov ebx,[delta.y]
        mov esi,[collision.sel]
        mov [.count],esi
        mov [.current],collision.table
.next2:
        mov esi,[.current]
        mov esi,[esi]
        mov ecx,320
        mov edx,200
        sub ecx,[esi+item.xl]
        sub edx,[esi+item.yl]
        add [esi+item.x],eax
        jge @f
        mov dword[esi+item.x],0
@@:
        cmp [esi+item.x],ecx
        jl @f
        mov [esi+item.x],ecx
@@:
        add [esi+item.y],ebx
        jge @f
        mov dword[esi+item.y],0
@@:
        cmp [esi+item.y],edx
        jl @f
        mov [esi+item.y],edx
@@:
        add [selbox.x],eax
        add [selbox.y],ebx
        add [.current],4
        dec [.count]
        jne .next2
.end:
.itemdisp:
        mov esi,[.table]
        mov eax,[esi]
        mov [.count],eax
        add esi,4
        mov [.current],esi
.next3:
        mov esi,[.current]
        mov esi,[esi]
        mov eax,[esi+item.x]
        mov ebx,[esi+item.y]
        mov [put.x],eax
        mov [put.y],ebx
        mov esi,[esi+item.bmp]
        call put
        add [.current],4
        sub [.count],4
        jne .next3
        sub [colvar],white-blue
        cmp [collision.sel],0
        je @f
.disp:
        mov esi,[collision.sel]
        mov [.count],esi
        mov [.current],collision.table
.next4:
        mov esi,[.current]
        mov esi,[esi]
        mov eax,[esi+item.x]
        mov ebx,[esi+item.y]
        mov [put.x],eax
        mov [put.y],ebx
        mov esi,[esi+item.bmp]
        call put
        add [.current],4
        dec [.count]
        jne .next4
@@:
        add [colvar],white-blue
        ret
.table rd 1
.count rd 1
.current rd 1
.drag? rd 1
.xs rd 1
.ys rd 1
.sel rd 1
.hysteresis dd 1
.called rd 1