Rev 1958 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1958 | Rev 2163 | ||
---|---|---|---|
Line 47... | Line 47... | ||
47 | mov [image_file],eax |
47 | mov [image_file],eax |
48 | mov esi,[eax+28] |
48 | mov esi,[eax+28] |
49 | add esi,eax |
49 | add esi,eax |
50 | mov edi,esi |
50 | mov edi,esi |
51 | mov ecx,[eax+32] |
51 | mov ecx,[eax+32] |
52 | ; xor ebx,ebx |
- | |
53 | ; mov [raw_area],ebx |
- | |
54 | - | ||
55 | ; mov ebx,[pointer] |
- | |
56 | ; movzx eax,word [eax+18] |
- | |
57 | ; mov [ebx+24],eax |
- | |
58 | ; jmp .ret_ok |
- | |
Line 59... | Line 52... | ||
59 | 52 | ||
60 | cmp [eax+16],word 16 |
53 | cmp [eax+16],word 16 |
61 | je .16b |
54 | je .16b |
62 | cmp [eax+12],dword 1 |
55 | cmp [eax+12],dword 1 |
Line 65... | Line 58... | ||
65 | je .2b |
58 | je .2b |
66 | cmp [eax+12],dword 4 |
59 | cmp [eax+12],dword 4 |
67 | je .4b |
60 | je .4b |
68 | ;--------------------------------------------------------------------- |
61 | ;--------------------------------------------------------------------- |
69 | .ret_ok: |
62 | .ret_ok: |
70 | ; mov ebx,[pointer] |
- | |
71 | ; mov eax,[raw_area] |
- | |
72 | ; mov [ebx+20],eax ; store RAW pointer |
- | |
73 | ; mov [ebx+24],ecx |
- | |
74 | - | ||
75 | mov ebx,[image_file] |
63 | mov ebx,[image_file] |
76 | cmp [ebx+18],word 2 |
64 | cmp [ebx+18],word 2 |
77 | jne @f |
65 | jne @f |
78 | mov eax,[ebx+12] |
66 | mov eax,[ebx+12] |
79 | shr eax,1 |
67 | shr eax,1 |
80 | mov [ebx+12],eax |
68 | mov [ebx+12],eax |
81 | @@: |
69 | @@: |
82 | - | ||
83 | popad |
70 | popad |
84 | ret 4 |
71 | ret 4 |
85 | ;--------------------------------------------------------------------- |
72 | ;--------------------------------------------------------------------- |
86 | .less_8b: |
73 | .less_8b: |
87 | mov edx,[image_file] |
74 | mov edx,[image_file] |
88 | mov ecx,[area_size] |
75 | mov ecx,[area_size] |
89 | add ecx,[edx+28] |
76 | add ecx,[edx+28] |
90 | mcall 68,20 |
77 | mcall 68,20 |
91 | mov [image_file],eax |
78 | mov [image_file],eax |
Line 92... | Line -... | ||
92 | - | ||
93 | 79 | ||
94 | mov ecx,[area_size] |
80 | mov ecx,[area_size] |
95 | mov eax,ecx |
81 | mov eax,ecx |
96 | shr ecx,2 |
82 | shr ecx,2 |
97 | test eax,3 |
83 | test eax,3 |
Line 102... | Line 88... | ||
102 | mov edi,[image_file] |
88 | mov edi,[image_file] |
103 | add edi,[edi+28] |
89 | add edi,[edi+28] |
104 | cld |
90 | cld |
105 | rep movsd |
91 | rep movsd |
Line 106... | Line 92... | ||
106 | 92 | ||
107 | mov ecx,[raw_area] |
- | |
108 | mcall 68,13 |
93 | mcall 68,13,[raw_area] |
109 | mov eax,[image_file] |
94 | mov eax,[image_file] |
110 | mov ebx,[pointer] |
95 | mov ebx,[pointer] |
111 | mov [ebx+4],eax |
96 | mov [ebx+4],eax |
112 | popad |
97 | popad |
113 | ret 4 |
98 | ret 4 |
114 | ;--------------------------------------------------------------------- |
99 | ;--------------------------------------------------------------------- |
- | 100 | .16b: |
|
115 | .16b: |
101 | ; eax - RAW image_file |
116 | cmp [eax+18],word 3 |
102 | cmp [eax+18],word 3 |
117 | je @f ;.convert_16_in_8 |
103 | je @f |
118 | cmp [eax+18],word 4 |
104 | cmp [eax+18],word 4 |
119 | jne .16b_1 |
105 | jne .16b_1 |
120 | @@: |
106 | @@: |
121 | xor ebx,ebx |
107 | xor ebx,ebx |
Line 132... | Line 118... | ||
132 | mov ebx,[eax+12] |
118 | mov ebx,[eax+12] |
133 | shr ebx,1 |
119 | shr ebx,1 |
134 | mov [eax+12],ebx |
120 | mov [eax+12],ebx |
Line 135... | Line 121... | ||
135 | 121 | ||
136 | mov ebx,eax |
- | |
Line 137... | Line 122... | ||
137 | ; jmp .ret_ok |
122 | mov ebx,eax |
138 | 123 | ||
139 | .convert_16_in_8: ; converting 16 bit sample to 8 bit |
124 | .convert_16_in_8: ; converting 16 bit sample to 8 bit |
140 | cld |
125 | cld |
Line 156... | Line 141... | ||
156 | mov al,ah |
141 | mov al,ah |
157 | stosb |
142 | stosb |
158 | @@: |
143 | @@: |
159 | dec ecx |
144 | dec ecx |
160 | jnz .convert_16_in_8 |
145 | jnz .convert_16_in_8 |
- | 146 | ||
161 | jmp .16b_end |
147 | jmp .16b_end |
162 | ;--------------------------------------------------------------------- |
148 | ;--------------------------------------------------------------------- |
163 | .16b_1: |
149 | .16b_1: |
- | 150 | ; eax - RAW image_file |
|
164 | cmp [eax+18],word 1 |
151 | cmp [eax+18],word 1 |
165 | je @f ;.convert_16_in_8_1 |
152 | je @f |
166 | cmp [eax+18],word 2 |
153 | cmp [eax+18],word 2 |
167 | jne .16b_end |
154 | jne .16b_end |
168 | @@: |
155 | @@: |
169 | shr ecx,1 |
156 | shr ecx,1 |
Line 174... | Line 161... | ||
174 | mov [eax+12],ebx |
161 | mov [eax+12],ebx |
Line 175... | Line 162... | ||
175 | 162 | ||
176 | .convert_16_in_8_1: |
163 | .convert_16_in_8_1: |
177 | cld |
164 | cld |
178 | lodsw |
- | |
179 | ; shr ax,8 |
- | |
180 | ; mov al,ah |
165 | lodsw |
181 | stosb |
166 | stosb |
182 | dec ecx |
167 | dec ecx |
183 | jnz .convert_16_in_8_1 |
168 | jnz .convert_16_in_8_1 |
184 | ;--------------------------------------------------------------------- |
169 | ;--------------------------------------------------------------------- |
Line 208... | Line 193... | ||
208 | pop edi ebx |
193 | pop edi ebx |
209 | add edi,edx |
194 | add edi,edx |
210 | dec ecx |
195 | dec ecx |
211 | jnz .4b_1 |
196 | jnz .4b_1 |
Line 212... | Line 197... | ||
212 | 197 | ||
213 | jmp .less_8b ;.ret_ok |
198 | jmp .less_8b |
214 | ;--------------------------------------------------------------------- |
199 | ;--------------------------------------------------------------------- |
215 | .2b: |
200 | .2b: |
216 | call .get_memory |
- | |
217 | ; jmp .ret_ok |
- | |
218 | ; shr ecx,1 |
201 | call .get_memory |
219 | mov edx,ebx |
202 | mov edx,ebx |
220 | mov eax,ebx |
203 | mov eax,ebx |
221 | shr ebx,2 |
204 | shr ebx,2 |
222 | test eax,3 |
205 | test eax,3 |
Line 257... | Line 240... | ||
257 | 240 | ||
258 | add edi,edx |
241 | add edi,edx |
259 | dec ecx |
242 | dec ecx |
Line 260... | Line 243... | ||
260 | jnz .2b_1 |
243 | jnz .2b_1 |
261 | 244 | ||
262 | jmp .less_8b ;.ret_ok |
245 | jmp .less_8b |
263 | ;--------------------------------------------------------------------- |
246 | ;--------------------------------------------------------------------- |
264 | .1b: |
247 | .1b: |
265 | call .get_memory |
248 | call .get_memory |
Line 292... | Line 275... | ||
292 | and al,1b |
275 | and al,1b |
293 | shl eax,8 |
276 | shl eax,8 |
Line 294... | Line 277... | ||
294 | 277 | ||
295 | mov al,bl |
278 | mov al,bl |
296 | shr al,7 |
- | |
297 | ; and al,1b |
- | |
Line 298... | Line 279... | ||
298 | ; shl eax,8 |
279 | shr al,7 |
Line 299... | Line 280... | ||
299 | 280 | ||
300 | stosd |
281 | stosd |
Line 324... | Line 305... | ||
324 | pop edi ebp |
305 | pop edi ebp |
Line 325... | Line 306... | ||
325 | 306 | ||
326 | add edi,edx |
307 | add edi,edx |
327 | dec ecx |
308 | dec ecx |
- | 309 | jnz .1b_1 |
|
328 | jnz .1b_1 |
310 | |
329 | jmp .less_8b ;.ret_ok |
311 | jmp .less_8b |
330 | ;--------------------------------------------------------------------- |
312 | ;--------------------------------------------------------------------- |
- | 313 | .get_memory: |
|
331 | .get_memory: |
314 | ; eax - RAW image_file |
332 | mov ebx,dword 8 |
315 | mov ebx,dword 8 |
333 | mov [eax+16],bx |
316 | mov [eax+16],bx |
334 | mov [eax+12],ebx |
- | |
335 | ; mov esi,[eax+28] |
- | |
336 | ; add esi,eax |
- | |
337 | ; push ecx |
317 | mov [eax+12],ebx |
338 | mov ecx,[eax+4] |
318 | mov ecx,[eax+4] |
339 | imul ecx,[eax+8] |
319 | imul ecx,[eax+8] |
340 | push eax |
320 | push eax |
341 | mov [area_size],ecx |
321 | mov [area_size],ecx |
342 | mcall 68,12 |
- | |
343 | ; pop ecx |
322 | mcall 68,12 |
344 | mov [raw_area],eax |
323 | mov [raw_area],eax |
345 | mov edi,eax |
324 | mov edi,eax |
346 | pop eax |
325 | pop eax |
347 | mov ebx,[eax+4] |
326 | mov ebx,[eax+4] |
Line 363... | Line 342... | ||
363 | 342 | ||
364 | mov ecx,[eax+4] |
343 | mov ecx,[eax+4] |
365 | imul ecx,[eax+8] |
344 | imul ecx,[eax+8] |
366 | push eax ecx |
345 | push eax ecx |
367 | lea ecx,[ecx*3] |
346 | lea ecx,[ecx*3] |
- | 347 | mov edx,ecx |
|
- | 348 | add ecx,44 ; header |
|
368 | mcall 68,12 |
349 | mcall 68,12 ;get new RAW area |
369 | mov [raw_area],eax |
350 | mov [raw_area],eax |
- | 351 | mov edi,eax |
|
- | 352 | ||
- | 353 | push esi |
|
- | 354 | mov esi,[image_file] |
|
- | 355 | mov ecx,3 |
|
- | 356 | cld |
|
- | 357 | rep movsd ;copy the 3 first dword for the structure of RAW |
|
- | 358 | pop esi |
|
- | 359 | ||
- | 360 | sub edi,12 |
|
- | 361 | mov [edi+12],dword 24 ;overall depth of the pixel |
|
- | 362 | mov [edi+16],word 8 ;channel depth of the pixel |
|
- | 363 | xor eax,eax |
|
- | 364 | mov [edi+20],eax ;palette area pointer |
|
- | 365 | mov [edi+24],eax ;palette area size |
|
- | 366 | mov [edi+28],dword 44 ;rgb area pointer |
|
- | 367 | mov [edi+32],edx ;rgb area size |
|
- | 368 | mov [edi+36],eax ;transparency area pointer |
|
370 | mov edi,eax |
369 | mov [edi+40],eax ;transparency area size |
Line -... | Line 370... | ||
- | 370 | pop ecx eax |
|
- | 371 | ||
371 | pop ecx eax |
372 | add edi,44 |
372 | 373 | ||
373 | cmp [eax+12],dword 32 |
374 | cmp [eax+12],dword 32 |
374 | je .32b |
375 | je .32b |
375 | cmp [eax+12],dword 16 |
376 | cmp [eax+12],dword 16 |
Line 383... | Line 384... | ||
383 | mov ebx,[pointer] |
384 | mov ebx,[pointer] |
384 | mov eax,[raw_area] |
385 | mov eax,[raw_area] |
385 | mov [ebx+20],eax ; store RAW pointer |
386 | mov [ebx+20],eax ; store RAW pointer |
386 | popad |
387 | popad |
387 | ret 4 |
388 | ret 4 |
388 | - | ||
389 | ;--------------------------------------------------------------------- |
389 | ;--------------------------------------------------------------------- |
390 | .32b: |
390 | .32b: |
391 | cld |
391 | cld |
392 | lodsd |
392 | lodsd |
393 | - | ||
394 | stosw |
393 | stosw |
395 | shr eax,16 |
394 | shr eax,16 |
396 | stosb |
395 | stosb |
Line 397... | Line 396... | ||
397 | 396 | ||
Line 480... | Line 479... | ||
480 | jmp .ret_ok |
479 | jmp .ret_ok |
481 | ;--------------------------------------------------------------------- |
480 | ;--------------------------------------------------------------------- |
482 | align 16 |
481 | align 16 |
483 | EXPORTS: |
482 | EXPORTS: |
484 | dd szStart, START |
483 | dd szStart, START |
485 | dd szVersion, 0x00010002 |
484 | dd szVersion, 0x00010003 |
486 | dd szConv_24b, Convert24b |
485 | dd szConv_24b, Convert24b |
487 | dd 0 |
486 | dd 0 |
Line 488... | Line 487... | ||
488 | 487 | ||
489 | szStart db 'START',0 |
488 | szStart db 'START',0 |