Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 485 | Rev 551 | ||
---|---|---|---|
1 | ; Originally written by Jarek Pelczar |
1 | ; Originally written by Jarek Pelczar |
2 | include "lang.inc" |
2 | include "lang.inc" |
3 | include "..\..\..\macros.inc" |
3 | include "..\..\..\macros.inc" |
4 | 4 | ||
5 | WND_SIZE_X = 320 |
5 | WND_SIZE_X = 320 |
6 | WND_SIZE_Y = 200 |
6 | WND_SIZE_Y = 200 |
7 | 7 | ||
8 | MEOS_APP_START |
8 | MEOS_APP_START |
9 | CODE |
9 | CODE |
10 | fninit |
10 | fninit |
11 | mov al,40 |
11 | mov al,40 |
12 | mov bl,101b |
12 | mov bl,101b |
13 | mcall |
13 | mcall |
14 | call init_palette |
14 | call init_palette |
15 | call init_texture |
15 | call init_texture |
16 | jmp .paint_window |
16 | jmp .paint_window |
17 | .event_loop: |
17 | .event_loop: |
18 | mov al,23 |
18 | mov al,23 |
19 | mov ebx,1 |
19 | mov ebx,1 |
20 | mcall |
20 | mcall |
21 | test eax,eax |
21 | test eax,eax |
22 | je .draw_screen |
22 | je .draw_screen |
23 | dec eax |
23 | dec eax |
24 | je .paint_window |
24 | je .paint_window |
25 | 25 | ||
26 | or eax,-1 |
26 | or eax,-1 |
27 | mcall |
27 | mcall |
28 | 28 | ||
29 | .draw_screen: |
29 | .draw_screen: |
30 | call blit_8_to_32 |
30 | call blit_8_to_32 |
31 | mov al,7 |
31 | mov al,7 |
32 | mov ebx,virtual_screen_32 |
32 | mov ebx,virtual_screen_32 |
33 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
33 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
34 | xor edx,edx |
34 | xor edx,edx |
35 | mcall |
35 | mcall |
36 | call rotate_pal |
36 | call rotate_pal |
37 | jmp .event_loop |
37 | jmp .event_loop |
38 | 38 | ||
39 | .paint_window: |
39 | .paint_window: |
40 | mov al,12 |
40 | mov al,12 |
41 | push eax |
41 | push eax |
42 | xor ebx,ebx |
42 | xor ebx,ebx |
43 | inc ebx |
43 | inc ebx |
44 | mcall |
44 | mcall |
45 | 45 | ||
46 | xor eax,eax |
46 | xor eax,eax |
47 | mov ebx,(100 shl 16)+(WND_SIZE_X+8) |
47 | mov ebx,(100 shl 16)+(WND_SIZE_X+8) |
48 | mov ecx,(100 shl 16)+(WND_SIZE_Y+25) |
48 | mov ecx,(100 shl 16)+(WND_SIZE_Y+25) |
49 | mov edx,0x33000000 |
49 | mov edx,0x34000000 |
50 | mov edi,title |
50 | mov edi,title |
51 | mcall |
51 | mcall |
52 | 52 | ||
53 | mov al,7 |
53 | mov al,7 |
54 | mov ebx,virtual_screen_32 |
54 | mov ebx,virtual_screen_32 |
55 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
55 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
56 | xor edx,edx |
56 | xor edx,edx |
57 | mcall |
57 | mcall |
58 | 58 | ||
59 | pop eax |
59 | pop eax |
60 | and ebx,2 ; bit 1 is set |
60 | and ebx,2 ; bit 1 is set |
61 | mcall |
61 | mcall |
62 | 62 | ||
63 | jmp .event_loop |
63 | jmp .event_loop |
64 | 64 | ||
65 | init_palette: |
65 | init_palette: |
66 | mov edi,_palette |
66 | mov edi,_palette |
67 | mov ecx,64 |
67 | mov ecx,64 |
68 | xor eax,eax |
68 | xor eax,eax |
69 | .color1: |
69 | .color1: |
70 | inc ah |
70 | inc ah |
71 | mov al,ah |
71 | mov al,ah |
72 | stosb |
72 | stosb |
73 | xor al,al |
73 | xor al,al |
74 | stosb |
74 | stosb |
75 | stosb |
75 | stosb |
76 | inc edi |
76 | inc edi |
77 | loop .color1 |
77 | loop .color1 |
78 | mov ecx,64 |
78 | mov ecx,64 |
79 | push ecx |
79 | push ecx |
80 | xor eax,eax |
80 | xor eax,eax |
81 | .color2: |
81 | .color2: |
82 | mov al,63 |
82 | mov al,63 |
83 | stosb |
83 | stosb |
84 | mov al,ah |
84 | mov al,ah |
85 | stosb |
85 | stosb |
86 | xor al,al |
86 | xor al,al |
87 | stosb |
87 | stosb |
88 | inc ah |
88 | inc ah |
89 | inc edi |
89 | inc edi |
90 | loop .color2 |
90 | loop .color2 |
91 | pop ecx |
91 | pop ecx |
92 | push ecx |
92 | push ecx |
93 | xor eax,eax |
93 | xor eax,eax |
94 | .color3: |
94 | .color3: |
95 | mov al,63 |
95 | mov al,63 |
96 | stosb |
96 | stosb |
97 | stosb |
97 | stosb |
98 | mov al,ah |
98 | mov al,ah |
99 | stosb |
99 | stosb |
100 | inc ah |
100 | inc ah |
101 | inc edi |
101 | inc edi |
102 | loop .color3 |
102 | loop .color3 |
103 | pop ecx |
103 | pop ecx |
104 | mov eax,0x003f3f3f |
104 | mov eax,0x003f3f3f |
105 | rep stosd |
105 | rep stosd |
106 | ret |
106 | ret |
107 | 107 | ||
108 | init_texture: |
108 | init_texture: |
109 | fldpi |
109 | fldpi |
110 | mov [_fpom16],180 |
110 | mov [_fpom16],180 |
111 | fidiv [_fpom16] |
111 | fidiv [_fpom16] |
112 | fstp [_st_rad] |
112 | fstp [_st_rad] |
113 | mov edi,virtual_screen_8 |
113 | mov edi,virtual_screen_8 |
114 | cdq |
114 | cdq |
115 | .itex_vertical: |
115 | .itex_vertical: |
116 | xor ecx,ecx |
116 | xor ecx,ecx |
117 | fld [_st_rad] |
117 | fld [_st_rad] |
118 | mov [_fpom16],5 |
118 | mov [_fpom16],5 |
119 | fimul [_fpom16] |
119 | fimul [_fpom16] |
120 | mov [_fpom16],dx |
120 | mov [_fpom16],dx |
121 | fimul [_fpom16] |
121 | fimul [_fpom16] |
122 | fsin |
122 | fsin |
123 | fmul [_multiplier] |
123 | fmul [_multiplier] |
124 | fstp [_fpom32] |
124 | fstp [_fpom32] |
125 | .itex_horizontal: |
125 | .itex_horizontal: |
126 | fld [_st_rad] |
126 | fld [_st_rad] |
127 | mov [_fpom16],3 |
127 | mov [_fpom16],3 |
128 | fimul [_fpom16] |
128 | fimul [_fpom16] |
129 | mov [_fpom16],cx |
129 | mov [_fpom16],cx |
130 | fimul [_fpom16] |
130 | fimul [_fpom16] |
131 | fsin |
131 | fsin |
132 | fmul [_multiplier] |
132 | fmul [_multiplier] |
133 | fadd [_fpom32] |
133 | fadd [_fpom32] |
134 | mov [_fpom16],127 |
134 | mov [_fpom16],127 |
135 | fiadd [_fpom16] |
135 | fiadd [_fpom16] |
136 | fistp [_fpom16] |
136 | fistp [_fpom16] |
137 | mov ax,[_fpom16] |
137 | mov ax,[_fpom16] |
138 | inc eax |
138 | inc eax |
139 | stosb |
139 | stosb |
140 | inc ecx |
140 | inc ecx |
141 | cmp ecx,WND_SIZE_X |
141 | cmp ecx,WND_SIZE_X |
142 | jne .itex_horizontal |
142 | jne .itex_horizontal |
143 | inc edx |
143 | inc edx |
144 | cmp edx,WND_SIZE_Y |
144 | cmp edx,WND_SIZE_Y |
145 | jne .itex_vertical |
145 | jne .itex_vertical |
146 | ret |
146 | ret |
147 | 147 | ||
148 | rotate_pal: |
148 | rotate_pal: |
149 | mov ebx,[_palette+4] |
149 | mov ebx,[_palette+4] |
150 | mov edi,_palette+4 |
150 | mov edi,_palette+4 |
151 | mov esi,_palette+8 |
151 | mov esi,_palette+8 |
152 | xor ecx,ecx |
152 | xor ecx,ecx |
153 | mov cl,255 |
153 | mov cl,255 |
154 | ; cld |
154 | ; cld |
155 | rep movsd |
155 | rep movsd |
156 | mov [_palette+1020],ebx |
156 | mov [_palette+1020],ebx |
157 | ret |
157 | ret |
158 | 158 | ||
159 | include "graph8.inc" |
159 | include "graph8.inc" |
160 | 160 | ||
161 | DATA |
161 | DATA |
162 | _multiplier dd 63.5 |
162 | _multiplier dd 63.5 |
163 | 163 | ||
164 | title db 'Plasma',0 |
164 | title db 'Plasma',0 |
165 | 165 | ||
166 | UDATA |
166 | UDATA |
167 | _fpom32 rd 1 |
167 | _fpom32 rd 1 |
168 | _fpom16 rw 1 |
168 | _fpom16 rw 1 |
169 | _st_rad rd 1 |
169 | _st_rad rd 1 |
170 | _palette: rd 256 |
170 | _palette: rd 256 |
171 | 171 | ||
172 | virtual_screen_8: |
172 | virtual_screen_8: |
173 | rb WND_SIZE_X*WND_SIZE_Y |
173 | rb WND_SIZE_X*WND_SIZE_Y |
174 | 174 | ||
175 | virtual_screen_32: |
175 | virtual_screen_32: |
176 | rb WND_SIZE_X*WND_SIZE_Y*3 |
176 | rb WND_SIZE_X*WND_SIZE_Y*3 |
177 | 177 | ||
178 | MEOS_APP_END |
178 | MEOS_APP_END |