Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2271 leency 1
macro .comment
2
{
3
init_envmap:	     ; create 512x512 env map
4
.temp equ word [ebp-2]
5
	 push	  ebp
6
	 mov	  ebp,esp
7
	 sub	  esp,2
8
	 mov	  edi,envmap
9
	 fninit
10
 
11
	 mov	  dx,-256
12
    .ie_ver:
13
	 mov	  cx,-256
14
    .ie_hor:
15
	 mov	  .temp,cx
16
	 fild	  .temp
17
	 fmul	  st,st0
18
	 mov	  .temp,dx
19
	 fild	  .temp
20
	 fmul	  st,st0
21
	 faddp
22
	 fsqrt
23
	 mov	  .temp,254
24
	 fisubr   .temp
25
	 fmul	  [env_const]
26
	 fistp	  .temp
27
	 mov	  ax,.temp
28
 
29
	 or	 ax,ax
30
	 jge	 .ie_ok1
31
	 xor	 ax,ax
32
	 jmp	 .ie_ok2
33
  .ie_ok1:
34
	 cmp	 ax,254
35
	 jle	 .ie_ok2
36
	 mov	 ax,254
37
  .ie_ok2:
38
	 push	 dx
39
	 mov	 bx,ax
40
	 mul	 [max_color_b]
41
	 shr	 ax,8
42
	 stosb
43
	 mov	 ax,bx
44
	 mul	 [max_color_g]
45
	 shr	 ax,8
46
	 stosb
47
	 mov	 ax,bx
48
	 mul	 [max_color_r]
49
	 shr	 ax,8
50
	 stosb
51
	 pop	 dx
52
 
53
	 inc	 cx
54
	 cmp	 cx,256
55
	 jne	 .ie_hor
56
 
57
	 inc	 dx
58
	 cmp	 dx,256
59
	 jne	 .ie_ver
60
 
61
	 mov	 esp,ebp
62
	 pop	 ebp
63
ret
64
}
65
calc_bumpmap:		 ; calculate random bumpmap
66
;--------------in edi _ pointer to TEX_X x TEX_Y bumpmap
67
	 push	 edi
68
	 mov	 ecx,TEXTURE_SIZE
69
      @@:
70
	 push	 ecx
71
	 xor	 ecx,ecx
72
	 mov	 edx,255
73
	 call	 random
74
	 stosb
75
	 pop	ecx
76
	 loop	@b
77
 
78
	 pop	edi
79
	 mov	ecx,4
80
      .blur:
81
	 xor	esi,esi
82
	 mov	edx,TEXTURE_SIZE
83
	 xor	eax,eax
84
	 xor	ebx,ebx
85
      @@:
86
	 mov	ebp,esi
87
	 dec	ebp
88
	 and	ebp,TEXTURE_SIZE
89
	 mov	al,byte[ebp+edi]
90
 
91
	 mov	ebp,esi
92
	 inc	ebp
93
	 and	ebp,TEXTURE_SIZE
94
	 mov	bl,byte[ebp+edi]
95
	 add	eax,ebx
96
 
97
	 mov	ebp,esi
98
	 sub	ebp,TEX_X
99
	 and	ebp,TEXTURE_SIZE
100
	 mov	bl,byte[ebp+edi]
101
	 add	eax,ebx
102
 
103
	 mov	ebp,esi
104
	 add	ebp,TEX_X
105
	 and	ebp,TEXTURE_SIZE
106
	 mov	bl,byte[ebp+edi]
107
	 add	eax,ebx
108
 
109
	 shr	eax,2
110
	 mov	byte[esi+edi],al
111
 
112
	 inc	esi
113
	 dec	edx
114
	 jnz	@b
115
 
116
	 loop	.blur
117
ret
118
random:
119
;  in  - ecx - min
120
;        edx - max
121
;  out - eax - random number
122
	 mov	bx,[rand_seed]
123
	 add	bx,0x9248
124
	 ror	bx,3
125
	 mov	[rand_seed],bx
126
 
127
	 mov	ax,dx
128
	 sub	ax,cx
129
	 mul	bx
130
	 mov	ax,dx
131
	 add	ax,cx
132
	 cwde
133
ret
134
rand_seed	dw	?