321,6 → 321,60 |
ret |
endp |
|
; ¢§ïâì 梥⠢®ªá¥«ï ¢ 2 íâ ¯ : |
; 1) ¨é¥¬ ¬¥áâ® ¢ áâàãªâãॠ¤¥à¥¢ , £¤¥ ¥áâì 㧥« (¥á«¨ ¢¥â¢ì ¥ áãé¥áâ¢ã¥â, ¢ë室¨¬ ¨§ äãªæ¨¨) |
; 2) ¡¥à¥¬ 梥⠢®ªá¥«ï |
;output: |
; eax - 梥⠢®ªá¥«ï |
align 4 |
proc buf2d_vox_obj_node_get_color, v_obj:dword,coord_x:dword,coord_y:dword,\ |
coord_z:dword,k_scale:dword |
push ebx ecx edi esi |
locals |
p_node dd 0 ;த¨â¥«ì᪨© 㧥« |
endl |
mov edi,[v_obj] |
add edi,vox_offs_data |
mov esi,[k_scale] |
cmp esi,1 |
jl .end_2 |
; *** (1) *** |
.found: |
stdcall vox_obj_get_node_position, [v_obj],[coord_x],[coord_y],[coord_z],esi |
movzx bx,byte[edi+3] |
mov [p_node],edi |
add edi,4 |
cmp eax,0 |
je .end_1 |
mov ecx,eax |
cld |
@@: ;横« ¤«ï ¯à®¯ã᪠¯à¥¤ë¤ãé¨å ¯®¤¤¥à¥¢ì¥¢ ¢ 㧫¥ |
bt bx,0 ;¯à®¢¥à塞 ¥áâì «¨ ¤®ç¥à¨¥ 㧫ë |
jnc .end_0 |
xor eax,eax |
stdcall vox_obj_rec0 ;¢ eax ¢ëç¨á«ï¥âáï ç¨á«® ¤®ç¥à¨å 㧫®¢, ¢ ¤ ®© ¢¥â¢¨ |
.end_0: |
shr bx,1 |
loop @b |
.end_1: |
bt bx,0 |
jnc .end_2 ;¥á«¨ ¯®¤¤¥à¥¢ ¥ áãé¥áâ¢ã¥â |
dec esi |
cmp esi,0 |
jg .found |
|
; *** (2) *** |
;get |
mov eax,dword[edi] |
and eax,0xffffff |
jmp .end_3 |
.end_2: |
mov eax,1 shl 31 |
.end_3: |
pop esi edi ecx ebx |
ret |
endp |
|
; ᤢ¨£ ¥â ã§«ë ¤«ï ¤®¡ ¢«¥¨ï ®¢ëå 㧫®¢ |
;input: |
; p_insert - ¯®§¨æ¨ï ¤«ï ¢áâ ¢ª¨ |