Subversion Repositories Kolibri OS

Rev

Rev 205 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 205 Rev 485
-
 
1
include '..\..\..\macros.inc'
1
use32
2
use32
2
        org     0x0
3
        org     0x0
3
 
4
 
4
        db      'MENUET01'
5
        db      'MENUET01'
5
        dd      0x01
6
        dd      0x01
6
        dd      START
7
        dd      START
7
        dd      I_END
8
        dd      I_END
8
        dd      mem_end
9
        dd      mem_end
9
        dd      mem_end
10
        dd      mem_end
10
        dd      0x0, 0x0
11
        dd      0x0, 0x0
11
 
12
 
12
START:
13
START:
13
 
14
 
14
        mov     edi, my_img
15
        mov     edi, my_img
15
        mov     ecx, 64001*3/4+1
16
        mov     ecx, 64001*3/4+1
16
        xor     eax, eax
17
        xor     eax, eax
17
        rep     stosd
18
        rep     stosd
18
 
19
 
19
        mov     al, 3
20
        mov     al, 3
20
        int     0x40
21
        mcall
21
        mov     [curtime], eax
22
        mov     [curtime], eax
22
 
23
 
23
red:
24
red:
24
        push    12
25
        push    12
25
        pop     eax
26
        pop     eax
26
        push    1
27
        push    1
27
        pop     ebx
28
        pop     ebx
28
        int     0x40
29
        mcall
29
 
30
 
30
        xor     eax, eax
31
        xor     eax, eax
31
        mov     ebx, 200*65536+325
32
        mov     ebx, 200*65536+325
32
        mov     ecx, 150*65536+225
33
        mov     ecx, 150*65536+225
33
        xor     edx, edx
34
        xor     edx, edx
34
        xor     esi, esi
35
        xor     esi, esi
35
        mov     edi, 0x00100000
36
        mov     edi, 0x00100000
36
        int     0x40
37
        mcall
37
 
38
 
38
        mov     al, 8
39
        mov     al, 8
39
        mov     ebx, (325-19)*65536+12
40
        mov     ebx, (325-19)*65536+12
40
        mov     ecx, 5*65536+12
41
        mov     ecx, 5*65536+12
41
        inc     edx
42
        inc     edx
42
        mov     esi, 0x00400000
43
        mov     esi, 0x00400000
43
        int     0x40
44
        mcall
44
 
45
 
45
        mov     al, 4
46
        mov     al, 4
46
        mov     ebx, 8*65536+8
47
        mov     ebx, 8*65536+8
47
        mov     ecx, 0x00FFFFFF;0x00402020
48
        mov     ecx, 0x00FFFFFF;0x00402020
48
        mov     edx, fire_label
49
        mov     edx, fire_label
49
        push    len00
50
        push    len00
50
        pop     esi
51
        pop     esi
51
        int     0x40
52
        mcall
52
 
53
 
53
        mov     al, 12
54
        mov     al, 12
54
        push    2
55
        push    2
55
        pop     ebx
56
        pop     ebx
56
        int     0x40
57
        mcall
57
 
58
 
58
still:
59
still:
59
 
60
 
60
        push    11
61
        push    11
61
        pop     eax
62
        pop     eax
62
        int     0x40
63
        mcall
63
 
64
 
64
        dec     eax
65
        dec     eax
65
        jz      red
66
        jz      red
66
        dec     eax
67
        dec     eax
67
        jz      key
68
        jz      key
68
        dec     eax
69
        dec     eax
69
        jz      button
70
        jz      button
70
 
71
 
71
        call    image
72
        call    image
72
        push    3
73
        push    3
73
        pop     eax
74
        pop     eax
74
        int     0x40
75
        mcall
75
        cmp     eax, [curtime]
76
        cmp     eax, [curtime]
76
        jz      still
77
        jz      still
77
        mov     [curtime], eax
78
        mov     [curtime], eax
78
print_fps:
79
print_fps:
79
        push    13
80
        push    13
80
        pop     eax
81
        pop     eax
81
        mov     ebx, (8+27*6)*65536+18
82
        mov     ebx, (8+27*6)*65536+18
82
        mov     ecx, 8*65536+8
83
        mov     ecx, 8*65536+8
83
        xor     edx, edx
84
        xor     edx, edx
84
        int     0x40
85
        mcall
85
        lea     edx, [ebx-10]
86
        lea     edx, [ebx-10]
86
        mov     al, 47
87
        mov     al, 47
87
        mov     ebx, 30000h
88
        mov     ebx, 30000h
88
        xor     ecx, ecx
89
        xor     ecx, ecx
89
        xchg    ecx, [fps]
90
        xchg    ecx, [fps]
90
        mov     esi, 0x00FFFFFF ;0x00400000
91
        mov     esi, 0x00FFFFFF ;0x00400000
91
        int     0x40
92
        mcall
92
        jmp     still
93
        jmp     still
93
 
94
 
94
key:
95
key:
95
        mov     al, 2
96
        mov     al, 2
96
        int     0x40
97
        mcall
97
        cmp     ah, 1Bh   ;
98
        cmp     ah, 1Bh   ;
98
        jne     still
99
        jne     still
99
button:
100
button:
100
; we have only one button, close
101
; we have only one button, close
101
        or      eax, -1
102
        or      eax, -1
102
        int     0x40
103
        mcall
103
 
104
 
104
image:
105
image:
105
 
106
 
106
; ¨á㥬 ¯¥­â £p ¬¬ã
107
; ¨á㥬 ¯¥­â £p ¬¬ã
107
penta:
108
penta:
108
	mov edi,my_img+0x540*3
109
	mov edi,my_img+0x540*3
109
	mov ebx,(320)*3
110
	mov ebx,(320)*3
110
       mov     eax,0x00fc0000
111
       mov     eax,0x00fc0000
111
       push    edi
112
       push    edi
112
        push     0x78
113
        push     0x78
113
        pop     ecx
114
        pop     ecx
114
ll_3:
115
ll_3:
115
        call    put_big_point
116
        call    put_big_point
116
        lea      edi, [edi+ebx+6]
117
        lea      edi, [edi+ebx+6]
117
        loop    ll_3
118
        loop    ll_3
118
       pop     edi
119
       pop     edi
119
        mov     cl, 0x60
120
        mov     cl, 0x60
120
ll_4:
121
ll_4:
121
        call    put_big_point
122
        call    put_big_point
122
       lea      edi, [edi+ebx*2+3]
123
       lea      edi, [edi+ebx*2+3]
123
       loop    ll_4
124
       loop    ll_4
124
        mov     cl, 0x61
125
        mov     cl, 0x61
125
ll_5:
126
ll_5:
126
        call    put_big_point
127
        call    put_big_point
127
        sub     edi, 2*320*3-3
128
        sub     edi, 2*320*3-3
128
       loop    ll_5
129
       loop    ll_5
129
        mov     edi, my_img+0x1D4F6
130
        mov     edi, my_img+0x1D4F6
130
       push    edi
131
       push    edi
131
        mov     cl, 0x78
132
        mov     cl, 0x78
132
ll_6:
133
ll_6:
133
        call    put_big_point
134
        call    put_big_point
134
       add edi,6
135
       add edi,6
135
       sub     edi,ebx
136
       sub     edi,ebx
136
       loop    ll_6
137
       loop    ll_6
137
       pop     edi
138
       pop     edi
138
       mov     ecx,0x8F*2
139
       mov     ecx,0x8F*2
139
ll_7:  stosd
140
ll_7:  stosd
140
       mov [edi+ebx-4],eax
141
       mov [edi+ebx-4],eax
141
       dec edi
142
       dec edi
142
       loop ll_7
143
       loop ll_7
143
 
144
 
144
fire:
145
fire:
145
; _‚HˆŒ€Hˆ…_! ‡¤¥áì á ¬®¥ ¨­â¥p¥á­®¥.
146
; _‚HˆŒ€Hˆ…_! ‡¤¥áì á ¬®¥ ¨­â¥p¥á­®¥.
146
; €«£®p¨â¬ £®p¥­¨ï.
147
; €«£®p¨â¬ £®p¥­¨ï.
147
	mov esi,[count1]
148
	mov esi,[count1]
148
        mov edx,[count2]
149
        mov edx,[count2]
149
        mov     ecx, 10000h
150
        mov     ecx, 10000h
150
Flame: cmp     esi,0xFA00*3+my_img       ; á¥¢¤®á«ãç ©­ ï â®çª  ¢ ¯p¥¤ « å íªp
151
Flame: cmp     esi,0xFA00*3+my_img       ; á¥¢¤®á«ãç ©­ ï â®çª  ¢ ¯p¥¤ « å íªp
151
       jae     NxtP      ; ¥á«¨ H…’ - ¡¥p¥¬ á«¥¤ãîéãî.
152
       jae     NxtP      ; ¥á«¨ H…’ - ¡¥p¥¬ á«¥¤ãîéãî.
152
       lodsd
153
       lodsd
153
       dec esi                   ; ‘ç¨â뢠¥¬ ¥¥ 梥â.
154
       dec esi                   ; ‘ç¨â뢠¥¬ ¥¥ 梥â.
154
;       and      eax,0x00ff0000
155
;       and      eax,0x00ff0000
155
        test    eax, eax
156
        test    eax, eax
156
                                ; ’®çª  ç¥p­ ï? (£®p¥âì ­¥ç¥¬ã?)
157
                                ; ’®çª  ç¥p­ ï? (£®p¥âì ­¥ç¥¬ã?)
157
       jz      NxtP      ; ¥á«¨ „€ - ¡¥p¥¬ á«¥¤ãîéãî.
158
       jz      NxtP      ; ¥á«¨ „€ - ¡¥p¥¬ á«¥¤ãîéãî.
158
       sub     eax,0x00040000
159
       sub     eax,0x00040000
159
                                   ; –¢¥â®¬ ­  ¥¤¨­¨æã ¬¥­ì訬
160
                                   ; –¢¥â®¬ ­  ¥¤¨­¨æã ¬¥­ì訬
160
       mov     [esi-2*3],eax       ;    áâ ¢¨¬ â®çªã á«¥¢ ,
161
       mov     [esi-2*3],eax       ;    áâ ¢¨¬ â®çªã á«¥¢ ,
161
       mov     [esi],eax         ;    á¯p ¢ ,
162
       mov     [esi],eax         ;    á¯p ¢ ,
162
       mov     [320*3+esi-1*3],eax    ;    á­¨§ã
163
       mov     [320*3+esi-1*3],eax    ;    á­¨§ã
163
       mov     [esi-0x141*3],eax ;    ¨ ᢥpåã.
164
       mov     [esi-0x141*3],eax ;    ¨ ᢥpåã.
164
NxtP:
165
NxtP:
165
       add     esi,edx
166
       add     esi,edx
166
       cmp esi,0xffff*3+my_img
167
       cmp esi,0xffff*3+my_img
167
       jbe loc_cont
168
       jbe loc_cont
168
       sub esi,0xfffe*3
169
       sub esi,0xfffe*3
169
loc_cont:
170
loc_cont:
170
                                ; ¥p¥¬ á«¥¤ãîéãî
171
                                ; ¥p¥¬ á«¥¤ãîéãî
171
       add     edx,3
172
       add     edx,3
172
       cmp edx,0x10000*3
173
       cmp edx,0x10000*3
173
       jbe loc_cont2
174
       jbe loc_cont2
174
       sub edx,0xfffe*3
175
       sub edx,0xfffe*3
175
loc_cont2:
176
loc_cont2:
176
                               ;    ¯á¥¢¤®á«ãç ©­ãî â®çªã.
177
                               ;    ¯á¥¢¤®á«ãç ©­ãî â®çªã.
177
       ;jnz     Flame           ; ˆ â ª 65536 p §.
178
       ;jnz     Flame           ; ˆ â ª 65536 p §.
178
	loop Flame
179
	loop Flame
179
	mov [count1],esi
180
	mov [count1],esi
180
        mov [count2],edx
181
        mov [count2],edx
181
 
182
 
182
	mov ebx,my_img
183
	mov ebx,my_img
183
	mov ecx,320*65536+200
184
	mov ecx,320*65536+200
184
	mov edx,2*65536+23
185
	mov edx,2*65536+23
185
        push    7
186
        push    7
186
        pop     eax
187
        pop     eax
187
	int 0x40
188
	int 0x40
188
 
189
 
189
	inc [fps]
190
	inc [fps]
190
	retn
191
	retn
191
 
192
 
192
put_big_point:
193
put_big_point:
193
        mov     [edi], eax
194
        mov     [edi], eax
194
        mov     [edi+3], eax
195
        mov     [edi+3], eax
195
        mov     [edi-3], eax
196
        mov     [edi-3], eax
196
        mov     [edi+ebx], eax
197
        mov     [edi+ebx], eax
197
        ret
198
        ret
198
 
199
 
199
;DATA
200
;DATA
200
align 4
201
align 4
201
   
202
   
202
count1	dd my_img
203
count1	dd my_img
203
count2 dd 0
204
count2 dd 0
204
curtime dd 0
205
curtime dd 0
205
fps	dd 0
206
fps	dd 0
206
fire_label	db 'Pentagramm in FIRE     FPS:'
207
fire_label	db 'Pentagramm in FIRE     FPS:'
207
len00=$-fire_label
208
len00=$-fire_label
208
I_END:
209
I_END:
209
 
210
 
210
align 16
211
align 16
211
        rb      320*3
212
        rb      320*3
212
my_img  rb      320*200*3
213
my_img  rb      320*200*3
213
        rb      320*3
214
        rb      320*3
214
 
215
 
215
; stack
216
; stack
216
        align   256
217
        align   256
217
        rb      256
218
        rb      256
218
mem_end:
219
mem_end: