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