Subversion Repositories Kolibri OS

Rev

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,,0,8,_palette
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,,0,8,_palette
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_END