forked from KolibriOS/kolibrios
Compare commits
6 Commits
pr-update-
...
update-dem
Author | SHA1 | Date | |
---|---|---|---|
8d5a695ee4 | |||
bd3ce6c50c | |||
0f98b9c0e4 | |||
da1237a6d6 | |||
908e9eaa12 | |||
2c496cfd05 |
@@ -456,13 +456,13 @@ tup.append_table(img_files, {
|
|||||||
{"DEMOS/BCDCLK", VAR_PROGS .. "/demos/bcdclk/trunk/bcdclk"},
|
{"DEMOS/BCDCLK", VAR_PROGS .. "/demos/bcdclk/trunk/bcdclk"},
|
||||||
{"DEMOS/BUDHBROT", VAR_PROGS .. "/demos/buddhabrot/trunk/buddhabrot"},
|
{"DEMOS/BUDHBROT", VAR_PROGS .. "/demos/buddhabrot/trunk/buddhabrot"},
|
||||||
{"DEMOS/EYES", VAR_PROGS .. "/demos/eyes/trunk/eyes"},
|
{"DEMOS/EYES", VAR_PROGS .. "/demos/eyes/trunk/eyes"},
|
||||||
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/trunk/firework"},
|
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/firework"},
|
||||||
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/trunk/movback"},
|
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/trunk/movback"},
|
||||||
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/trunk/plasma"},
|
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/plasma"},
|
||||||
{"DEMOS/SPIRAL", VAR_PROGS .. "/demos/spiral/spiral"},
|
{"DEMOS/SPIRAL", VAR_PROGS .. "/demos/spiral/spiral"},
|
||||||
{"DEMOS/TINYFRAC", VAR_PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
|
{"DEMOS/TINYFRAC", VAR_PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
|
||||||
{"DEMOS/TRANTEST", VAR_PROGS .. "/demos/trantest/trunk/trantest"},
|
{"DEMOS/TRANTEST", VAR_PROGS .. "/demos/trantest/trunk/trantest"},
|
||||||
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/trunk/tube"},
|
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/tube"},
|
||||||
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/trunk/unvwater"},
|
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/trunk/unvwater"},
|
||||||
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/trunk/web"},
|
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/trunk/web"},
|
||||||
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
|
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
|
||||||
|
@@ -1,82 +1,60 @@
|
|||||||
;
|
;
|
||||||
; FIRE for MENUET - Compile with FASM
|
; Fire for Kolibri - Compile with FASM
|
||||||
;
|
;
|
||||||
|
|
||||||
use32
|
use32
|
||||||
|
org 0
|
||||||
org 0x0
|
|
||||||
db 'MENUET01' ; 8 byte id
|
db 'MENUET01' ; 8 byte id
|
||||||
dd 1 ; header version
|
dd 1 ; header version
|
||||||
dd START ; program start
|
dd START ; program start
|
||||||
dd I_END ; image size
|
dd image_end ; image size
|
||||||
dd mem_end ; reguired amount of memory
|
dd mem_end ; reguired amount of memory
|
||||||
dd mem_end
|
dd stacktop
|
||||||
dd 0,0 ; no parameters, no path
|
dd 0,0 ; no parameters, no path
|
||||||
|
|
||||||
include '..\..\..\macros.inc'
|
include '..\..\macros.inc'
|
||||||
|
include '..\..\KOSfuncs.inc'
|
||||||
|
|
||||||
|
Screen_W equ 480
|
||||||
|
|
||||||
|
|
||||||
START:
|
START:
|
||||||
|
|
||||||
red:
|
|
||||||
|
|
||||||
; ************************************************
|
; ************************************************
|
||||||
; ********* WINDOW DEFINITIONS AND DRAW **********
|
; ********* WINDOW DEFINITIONS AND DRAW **********
|
||||||
; ************************************************
|
; ************************************************
|
||||||
|
|
||||||
draw_window:
|
draw_window:
|
||||||
|
|
||||||
mov eax,12 ; tell os about redraw
|
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||||
mov ebx,1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
xor eax,eax ; define and draw window
|
mcall SF_CREATE_WINDOW,<100,Screen_W+1>,<70,222>,0x01000000,0,0
|
||||||
mov ebx,100*65536+321
|
|
||||||
mov ecx,70*65536+222
|
|
||||||
mov edx,0x01000000
|
|
||||||
mov esi,0x00000000
|
|
||||||
mov edi,0x00000000
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mcall 13,0*65536+321,0*65536+30,0
|
mcall SF_DRAW_RECT,<0,Screen_W+1>,<0,30>,0
|
||||||
mcall ,0*65536+1 ,0*65536+222
|
mcall ,<0,1>,<0,222>
|
||||||
mcall ,321*65536+1,0*65536+223
|
mcall ,<Screen_W+1,1>,<0,223>
|
||||||
mcall ,0*65536+321,222*65536+1
|
mcall ,<0,Screen_W+1>,<222,1>
|
||||||
|
|
||||||
|
mcall SF_DRAW_TEXT,<(Screen_W-108)/2,8>,dword 0x00FFFFFF,text,textlen-text
|
||||||
|
|
||||||
mov al,4 ; 'FIRE FOR KOLIBRI'
|
mcall SF_DEFINE_BUTTON,<(Screen_W+1-19),12>,<5,12>,1,0x009a0000
|
||||||
mov ebx,106*65536+8
|
|
||||||
mov ecx,dword 0x00FFFFFF
|
|
||||||
mov edx,text
|
|
||||||
mov esi,textlen-text
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov al,8
|
|
||||||
mov ebx,(321-19)*65536+12 ; button start x & size
|
|
||||||
mov ecx,5*65536+12 ; button start y & size
|
|
||||||
mov edx,1 ; button number
|
|
||||||
mov esi,0x009a0000
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov ebx,ecx ;5*65536+12
|
mov ebx,ecx ;5*65536+12
|
||||||
inc edx
|
inc edx
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
mov ebx,18*65536+12
|
|
||||||
inc edx
|
inc edx
|
||||||
mcall
|
mcall ,<18,12>
|
||||||
|
|
||||||
mov ebx,31*65536+12
|
|
||||||
inc edx
|
inc edx
|
||||||
mcall
|
mcall ,<31,12>
|
||||||
|
|
||||||
mov al,12 ; tell os about redraw end
|
mcall SF_REDRAW, SSF_END_DRAW
|
||||||
mov ebx,2
|
|
||||||
mcall
|
|
||||||
|
|
||||||
sta: ; calculate fire image
|
sta: ; calculate fire image
|
||||||
|
|
||||||
mov esi, FireScreen+0x2300-80
|
mov esi, FireScreen.end+Screen_W*3-Screen_W/4
|
||||||
mov ecx, 80
|
mov ecx, Screen_W/4
|
||||||
mov eax, [FireSeed]
|
mov eax, [FireSeed]
|
||||||
|
|
||||||
NEWLINE:
|
NEWLINE:
|
||||||
@@ -89,7 +67,7 @@ sta: ; calculate fire image
|
|||||||
|
|
||||||
mov [FireSeed], eax
|
mov [FireSeed], eax
|
||||||
|
|
||||||
mov ecx, 0x2300-80
|
mov ecx, (Screen_W*200)/8+Screen_W*3-Screen_W/4
|
||||||
sub esi, ecx
|
sub esi, ecx
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
@@ -103,7 +81,7 @@ sta: ; calculate fire image
|
|||||||
add eax, edx
|
add eax, edx
|
||||||
mov dl, [esi]
|
mov dl, [esi]
|
||||||
add eax, edx
|
add eax, edx
|
||||||
mov dl, [esi + 80]
|
mov dl, [esi + Screen_W/4]
|
||||||
jmp typedone
|
jmp typedone
|
||||||
notype1:
|
notype1:
|
||||||
|
|
||||||
@@ -114,7 +92,7 @@ sta: ; calculate fire image
|
|||||||
; mov dl, [esi - 2]
|
; mov dl, [esi - 2]
|
||||||
; add eax, edx
|
; add eax, edx
|
||||||
lea eax, [eax + edx*2]
|
lea eax, [eax + edx*2]
|
||||||
mov dl, [esi + 78]
|
mov dl, [esi + Screen_W/4-2]
|
||||||
; notype2:
|
; notype2:
|
||||||
|
|
||||||
; type 2 is never used
|
; type 2 is never used
|
||||||
@@ -124,7 +102,7 @@ sta: ; calculate fire image
|
|||||||
; add eax, edx
|
; add eax, edx
|
||||||
; mov dl, [esi]
|
; mov dl, [esi]
|
||||||
; add eax, edx
|
; add eax, edx
|
||||||
; mov dl, [esi + 80]
|
; mov dl, [esi + Screen_W/4]
|
||||||
; notype3:
|
; notype3:
|
||||||
|
|
||||||
typedone:
|
typedone:
|
||||||
@@ -135,12 +113,10 @@ typedone:
|
|||||||
|
|
||||||
ZERO:
|
ZERO:
|
||||||
|
|
||||||
mov [esi - 81], al
|
mov [esi - Screen_W/4-1], al
|
||||||
loop FIRELOOP
|
loop FIRELOOP
|
||||||
|
|
||||||
mov al, 5 ; in this moment always high 24 bits of eax are zero!
|
mcall SF_SLEEP,[delay]
|
||||||
mov ebx,[delay]
|
|
||||||
mcall
|
|
||||||
|
|
||||||
inc [calc]
|
inc [calc]
|
||||||
cmp [calc], byte 2
|
cmp [calc], byte 2
|
||||||
@@ -169,7 +145,7 @@ typedone:
|
|||||||
mov [edi+3],ecx
|
mov [edi+3],ecx
|
||||||
mov [edi+6],ecx
|
mov [edi+6],ecx
|
||||||
mov [edi+9],cx
|
mov [edi+9],cx
|
||||||
lea ebx, [edi+320*3]
|
lea ebx, [edi+Screen_W*3]
|
||||||
mov [ebx+0],ecx
|
mov [ebx+0],ecx
|
||||||
mov [ebx+3],ecx
|
mov [ebx+3],ecx
|
||||||
mov [ebx+6],ecx
|
mov [ebx+6],ecx
|
||||||
@@ -177,50 +153,43 @@ typedone:
|
|||||||
|
|
||||||
add edi,12
|
add edi,12
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx,80
|
cmp edx,Screen_W/4
|
||||||
jnz nnl
|
jnz nnl
|
||||||
xor edx,edx
|
xor edx,edx
|
||||||
add edi,320*3
|
add edi,Screen_W*3
|
||||||
nnl:
|
nnl:
|
||||||
cmp esi,FireScreen+8000; 0x2000
|
cmp esi,FireScreen.end
|
||||||
jnz newc
|
jnz newc
|
||||||
|
|
||||||
mov al,7 ; display image
|
|
||||||
; high 24 bits of eax are zero!
|
|
||||||
pop ebx
|
pop ebx
|
||||||
mov ecx,4*80*65536+200
|
mcall SF_PUT_IMAGE,,<Screen_W,200>,<1,22>
|
||||||
mov edx,1*65536+22
|
|
||||||
mcall
|
|
||||||
|
|
||||||
nodrw:
|
nodrw:
|
||||||
|
|
||||||
mov eax,11 ; check if os wants to talk to us
|
mcall SF_CHECK_EVENT ; check if os wants to talk to us
|
||||||
mcall
|
|
||||||
dec eax
|
dec eax
|
||||||
jz red
|
jz draw_window
|
||||||
cmp al, 3-1
|
cmp al, 3-1
|
||||||
jnz nob4
|
jnz nob4
|
||||||
|
|
||||||
button: ; get button id
|
button: ; get button id
|
||||||
mov al,17
|
mcall SF_GET_BUTTON
|
||||||
mcall
|
|
||||||
shr eax, 8
|
shr eax, 8
|
||||||
|
|
||||||
dec eax
|
dec eax
|
||||||
jnz noclose
|
jnz @f
|
||||||
or eax,-1 ; close this program
|
mcall SF_TERMINATE_PROCESS ; close this program
|
||||||
mcall
|
@@:
|
||||||
noclose:
|
|
||||||
|
|
||||||
dec eax ; change fire type
|
dec eax ; change fire type
|
||||||
jnz nob2
|
jnz @f
|
||||||
xor [type], 1
|
xor [type], 1
|
||||||
nob2:
|
@@:
|
||||||
|
|
||||||
dec eax ; change delay
|
dec eax ; change delay
|
||||||
jnz nob3
|
jnz @f
|
||||||
xor [delay], 1
|
xor [delay], 1
|
||||||
nob3:
|
@@:
|
||||||
|
|
||||||
dec eax ; change color
|
dec eax ; change color
|
||||||
jnz nob4
|
jnz nob4
|
||||||
@@ -233,7 +202,7 @@ typedone:
|
|||||||
fcok:
|
fcok:
|
||||||
mov [fcolor],eax
|
mov [fcolor],eax
|
||||||
mov edi,ImageData
|
mov edi,ImageData
|
||||||
mov ecx,(320*600)/4
|
mov ecx,(Screen_W*200*3)/4
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
rep stosd
|
rep stosd
|
||||||
|
|
||||||
@@ -246,19 +215,23 @@ fcolor dd 2
|
|||||||
xx db 'x'
|
xx db 'x'
|
||||||
type db 0
|
type db 0
|
||||||
calc db 0
|
calc db 0
|
||||||
delay dd 0
|
delay dd 1
|
||||||
FireSeed dd 0x1234
|
FireSeed dd 0x1234
|
||||||
text: db 'FIRE FOR KOLIBRI'
|
text: db 'Fire for Kolibri'
|
||||||
textlen:
|
textlen:
|
||||||
|
|
||||||
I_END:
|
align 4
|
||||||
|
image_end:
|
||||||
|
|
||||||
FireScreen:
|
FireScreen:
|
||||||
rb 0x2300
|
rb (Screen_W*200)/8 ;wisible fire
|
||||||
|
.end:
|
||||||
|
rb Screen_W*3 ;hidden fire (need for generation)
|
||||||
ImageData:
|
ImageData:
|
||||||
rb 320*200*3
|
rb Screen_W*200*3
|
||||||
|
|
||||||
; stack
|
; stack
|
||||||
align 512
|
align 512
|
||||||
rb 512
|
rb 512
|
||||||
|
stacktop:
|
||||||
mem_end:
|
mem_end:
|
2
programs/demos/firework/build.bat
Normal file
2
programs/demos/firework/build.bat
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
@fasm firework.asm firework
|
||||||
|
@pause
|
@@ -21,9 +21,14 @@ use32
|
|||||||
dd stacktop ; reserved=no extended header
|
dd stacktop ; reserved=no extended header
|
||||||
dd 0, 0
|
dd 0, 0
|
||||||
|
|
||||||
include '../../../macros.inc'
|
include '../../macros.inc'
|
||||||
SCREEN_WIDTH = 320
|
include '../../KOSfuncs.inc'
|
||||||
SCREEN_HEIGHT = 200
|
|
||||||
|
SCREEN_WIDTH = 600 ;.. mod 8 == 0
|
||||||
|
Screen_W dd SCREEN_WIDTH
|
||||||
|
Screen_H dd 400
|
||||||
|
lost_bytes dd 0
|
||||||
|
|
||||||
SIMD equ SSE
|
SIMD equ SSE
|
||||||
SIMD_BYTES = 8
|
SIMD_BYTES = 8
|
||||||
; SSE 8
|
; SSE 8
|
||||||
@@ -46,9 +51,11 @@ PART_SIZE = 20
|
|||||||
macro shade
|
macro shade
|
||||||
{
|
{
|
||||||
local .lop
|
local .lop
|
||||||
|
mov ecx, [Screen_H]
|
||||||
|
imul ecx, [Screen_W]
|
||||||
|
shr ecx, 3 ;ecx = Screen_W * Screen_H / SIMD_BYTES
|
||||||
|
mov edi, [buffer]
|
||||||
if SIMD eq SSE
|
if SIMD eq SSE
|
||||||
mov ecx, SCREEN_WIDTH * SCREEN_HEIGHT / SIMD_BYTES
|
|
||||||
mov edi, buffer
|
|
||||||
movq mm1, qword [sub_mask]
|
movq mm1, qword [sub_mask]
|
||||||
.lop:
|
.lop:
|
||||||
movq mm0, [edi]
|
movq mm0, [edi]
|
||||||
@@ -57,8 +64,6 @@ if SIMD eq SSE
|
|||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
loop .lop
|
loop .lop
|
||||||
else if SIMD eq AVX
|
else if SIMD eq AVX
|
||||||
mov ecx, SCREEN_WIDTH * SCREEN_HEIGHT / SIMD_BYTES
|
|
||||||
mov edi, buffer
|
|
||||||
vmovdqa xmm1, xword [sub_mask]
|
vmovdqa xmm1, xword [sub_mask]
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa xmm0, [edi]
|
vmovdqa xmm0, [edi]
|
||||||
@@ -67,8 +72,6 @@ else if SIMD eq AVX
|
|||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
loop .lop
|
loop .lop
|
||||||
else if SIMD eq AVX2
|
else if SIMD eq AVX2
|
||||||
mov ecx, SCREEN_WIDTH * SCREEN_HEIGHT / SIMD_BYTES
|
|
||||||
mov edi, buffer
|
|
||||||
vmovdqa ymm1, yword [sub_mask]
|
vmovdqa ymm1, yword [sub_mask]
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa ymm0, [edi]
|
vmovdqa ymm0, [edi]
|
||||||
@@ -77,8 +80,6 @@ else if SIMD eq AVX2
|
|||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
loop .lop
|
loop .lop
|
||||||
else if SIMD eq AVX512
|
else if SIMD eq AVX512
|
||||||
mov ecx, SCREEN_WIDTH * SCREEN_HEIGHT / SIMD_BYTES
|
|
||||||
mov edi, buffer
|
|
||||||
vmovdqa64 zmm1, zword [sub_mask]
|
vmovdqa64 zmm1, zword [sub_mask]
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa64 zmm0, [edi]
|
vmovdqa64 zmm0, [edi]
|
||||||
@@ -91,10 +92,18 @@ end if
|
|||||||
|
|
||||||
macro blur_prepare
|
macro blur_prepare
|
||||||
{
|
{
|
||||||
mov ecx, (SCREEN_WIDTH * SCREEN_HEIGHT - SCREEN_WIDTH * 2 - SIMD_BYTES*2) / SIMD_BYTES
|
mov ecx, [Screen_H]
|
||||||
mov edi, buffer + SCREEN_WIDTH + SIMD_BYTES
|
dec ecx
|
||||||
|
dec ecx
|
||||||
|
imul ecx, [Screen_W]
|
||||||
|
sub ecx, SIMD_BYTES*2
|
||||||
|
shr ecx, 3 ;ecx = (Screen_W * (Screen_H - 2) - SIMD_BYTES*2) / SIMD_BYTES
|
||||||
|
mov edi, SIMD_BYTES
|
||||||
|
add edi, [buffer]
|
||||||
|
add edi, [Screen_W]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; eax = [Screen_W]
|
||||||
macro blur
|
macro blur
|
||||||
{
|
{
|
||||||
local .lop
|
local .lop
|
||||||
@@ -104,8 +113,10 @@ if SIMD eq SSE
|
|||||||
movq mm1, [edi + 1]
|
movq mm1, [edi + 1]
|
||||||
movq mm2, [edi - 1]
|
movq mm2, [edi - 1]
|
||||||
movq mm3, mm0
|
movq mm3, mm0
|
||||||
movq mm4, [edi - SCREEN_WIDTH]
|
neg eax
|
||||||
movq mm5, [edi + SCREEN_WIDTH]
|
movq mm4, [edi + eax]
|
||||||
|
neg eax
|
||||||
|
movq mm5, [edi + eax]
|
||||||
|
|
||||||
pavgb mm0, mm1 ; mm0 = avg(cur,cur+1)
|
pavgb mm0, mm1 ; mm0 = avg(cur,cur+1)
|
||||||
pavgb mm3, mm2 ; mm3 = avg(cur,cur-1)
|
pavgb mm3, mm2 ; mm3 = avg(cur,cur-1)
|
||||||
@@ -120,11 +131,13 @@ else if SIMD eq AVX
|
|||||||
.lop:
|
.lop:
|
||||||
vmovdqa xmm0, [edi]
|
vmovdqa xmm0, [edi]
|
||||||
vmovdqa xmm1, xmm0
|
vmovdqa xmm1, xmm0
|
||||||
vmovdqa xmm2, [edi - SCREEN_WIDTH]
|
neg eax
|
||||||
|
vmovdqa xmm2, [edi + eax]
|
||||||
|
neg eax
|
||||||
|
|
||||||
vpavgb xmm0, xmm0, [edi + 1]
|
vpavgb xmm0, xmm0, [edi + 1]
|
||||||
vpavgb xmm1, xmm1, [edi - 1]
|
vpavgb xmm1, xmm1, [edi - 1]
|
||||||
vpavgb xmm2, xmm2, [edi + SCREEN_WIDTH]
|
vpavgb xmm2, xmm2, [edi + eax]
|
||||||
vpavgb xmm1, xmm1, xmm2
|
vpavgb xmm1, xmm1, xmm2
|
||||||
vpavgb xmm0, xmm0, xmm1
|
vpavgb xmm0, xmm0, xmm1
|
||||||
|
|
||||||
@@ -135,11 +148,13 @@ else if SIMD eq AVX2
|
|||||||
.lop:
|
.lop:
|
||||||
vmovdqa ymm0, [edi]
|
vmovdqa ymm0, [edi]
|
||||||
vmovdqa ymm1, ymm0
|
vmovdqa ymm1, ymm0
|
||||||
vmovdqa ymm2, [edi - SCREEN_WIDTH]
|
neg eax
|
||||||
|
vmovdqa ymm2, [edi + eax]
|
||||||
|
neg eax
|
||||||
|
|
||||||
vpavgb ymm0, ymm0, [edi + 1]
|
vpavgb ymm0, ymm0, [edi + 1]
|
||||||
vpavgb ymm1, ymm1, [edi - 1]
|
vpavgb ymm1, ymm1, [edi - 1]
|
||||||
vpavgb ymm2, ymm2, [edi + SCREEN_WIDTH]
|
vpavgb ymm2, ymm2, [edi + eax]
|
||||||
vpavgb ymm1, ymm1, ymm2
|
vpavgb ymm1, ymm1, ymm2
|
||||||
vpavgb ymm0, ymm0, ymm1
|
vpavgb ymm0, ymm0, ymm1
|
||||||
|
|
||||||
@@ -150,11 +165,13 @@ else if SIMD eq AVX512
|
|||||||
.lop:
|
.lop:
|
||||||
vmovdqa64 zmm0, [edi]
|
vmovdqa64 zmm0, [edi]
|
||||||
vmovdqa64 zmm1, zmm0
|
vmovdqa64 zmm1, zmm0
|
||||||
vmovdqa64 zmm2, [edi - SCREEN_WIDTH]
|
neg eax
|
||||||
|
vmovdqa64 zmm2, [edi + eax]
|
||||||
|
neg eax
|
||||||
|
|
||||||
vpavgb zmm0, zmm0, [edi + 1]
|
vpavgb zmm0, zmm0, [edi + 1]
|
||||||
vpavgb zmm1, zmm1, [edi - 1]
|
vpavgb zmm1, zmm1, [edi - 1]
|
||||||
vpavgb zmm2, zmm2, [edi + SCREEN_WIDTH]
|
vpavgb zmm2, zmm2, [edi + eax]
|
||||||
vpavgb zmm1, zmm1, zmm2
|
vpavgb zmm1, zmm1, zmm2
|
||||||
vpavgb zmm0, zmm0, zmm1
|
vpavgb zmm0, zmm0, zmm1
|
||||||
|
|
||||||
@@ -164,6 +181,7 @@ else if SIMD eq AVX512
|
|||||||
end if
|
end if
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; eax = [Screen_W]
|
||||||
macro blur_right
|
macro blur_right
|
||||||
{
|
{
|
||||||
local .lop
|
local .lop
|
||||||
@@ -171,8 +189,8 @@ if SIMD eq SSE
|
|||||||
.lop:
|
.lop:
|
||||||
movq mm0, [edi]
|
movq mm0, [edi]
|
||||||
movq mm1, [edi + 1]
|
movq mm1, [edi + 1]
|
||||||
movq mm2, [edi + SCREEN_WIDTH]
|
movq mm2, [edi + eax]
|
||||||
movq mm3, [edi + SCREEN_WIDTH + 1]
|
movq mm3, [edi + eax + 1]
|
||||||
pavgb mm0, mm1
|
pavgb mm0, mm1
|
||||||
pavgb mm3, mm2
|
pavgb mm3, mm2
|
||||||
pavgb mm0, mm3
|
pavgb mm0, mm3
|
||||||
@@ -182,9 +200,9 @@ if SIMD eq SSE
|
|||||||
else if SIMD eq AVX
|
else if SIMD eq AVX
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa xmm0, [edi]
|
vmovdqa xmm0, [edi]
|
||||||
vmovdqu xmm1, [edi + SCREEN_WIDTH + 1]
|
vmovdqu xmm1, [edi + eax + 1]
|
||||||
vpavgb xmm2, xmm0, [edi + 1]
|
vpavgb xmm2, xmm0, [edi + 1]
|
||||||
vpavgb xmm3, xmm1, [edi + SCREEN_WIDTH]
|
vpavgb xmm3, xmm1, [edi + eax]
|
||||||
vpavgb xmm4, xmm2, xmm3
|
vpavgb xmm4, xmm2, xmm3
|
||||||
vmovdqa [edi], xmm4
|
vmovdqa [edi], xmm4
|
||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
@@ -192,9 +210,9 @@ else if SIMD eq AVX
|
|||||||
else if SIMD eq AVX2
|
else if SIMD eq AVX2
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa ymm0, [edi]
|
vmovdqa ymm0, [edi]
|
||||||
vmovdqu ymm1, [edi + SCREEN_WIDTH + 1]
|
vmovdqu ymm1, [edi + eax + 1]
|
||||||
vpavgb ymm2, ymm0, [edi + 1]
|
vpavgb ymm2, ymm0, [edi + 1]
|
||||||
vpavgb ymm3, ymm1, [edi + SCREEN_WIDTH]
|
vpavgb ymm3, ymm1, [edi + eax]
|
||||||
vpavgb ymm4, ymm2, ymm3
|
vpavgb ymm4, ymm2, ymm3
|
||||||
vmovdqa [edi], ymm4
|
vmovdqa [edi], ymm4
|
||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
@@ -202,9 +220,9 @@ else if SIMD eq AVX2
|
|||||||
else if SIMD eq AVX512
|
else if SIMD eq AVX512
|
||||||
.lop:
|
.lop:
|
||||||
vmovdqa64 zmm0, [edi]
|
vmovdqa64 zmm0, [edi]
|
||||||
vmovdqu64 zmm1, [edi + SCREEN_WIDTH + 1]
|
vmovdqu64 zmm1, [edi + eax + 1]
|
||||||
vpavgb zmm2, zmm0, [edi + 1]
|
vpavgb zmm2, zmm0, [edi + 1]
|
||||||
vpavgb zmm3, zmm1, [edi + SCREEN_WIDTH]
|
vpavgb zmm3, zmm1, [edi + eax]
|
||||||
vpavgb zmm4, zmm2, zmm3
|
vpavgb zmm4, zmm2, zmm3
|
||||||
vmovdqa64 [edi], zmm4
|
vmovdqa64 [edi], zmm4
|
||||||
add edi, SIMD_BYTES
|
add edi, SIMD_BYTES
|
||||||
@@ -217,12 +235,12 @@ STARTAPP:
|
|||||||
init_palette:
|
init_palette:
|
||||||
mov edi, pal
|
mov edi, pal
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
red_loop:
|
@@:
|
||||||
stosd
|
stosd
|
||||||
stosd
|
stosd
|
||||||
add eax, 0x040000
|
add eax, 0x040000
|
||||||
and eax, 0xFFFFFF
|
and eax, 0xFFFFFF
|
||||||
jnz red_loop
|
jnz @b
|
||||||
|
|
||||||
mov eax, 63*4 SHL 16
|
mov eax, 63*4 SHL 16
|
||||||
@@:
|
@@:
|
||||||
@@ -231,11 +249,12 @@ red_loop:
|
|||||||
add ax, 0x0404
|
add ax, 0x0404
|
||||||
jnc @b
|
jnc @b
|
||||||
|
|
||||||
;zero_buffer:
|
;init buffer
|
||||||
mov ecx, SCREEN_WIDTH * SCREEN_HEIGHT / 4
|
mcall SF_SYS_MISC,SSF_HEAP_INIT
|
||||||
; mov edi, buffer
|
mov ecx,[Screen_W]
|
||||||
xor eax, eax
|
imul ecx,[Screen_H]
|
||||||
rep stosd
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [buffer],eax
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Main Functions
|
; Main Functions
|
||||||
@@ -253,30 +272,63 @@ end virtual
|
|||||||
|
|
||||||
jmp MAIN
|
jmp MAIN
|
||||||
|
|
||||||
|
align 4
|
||||||
|
OnResize:
|
||||||
|
mov ecx,[Screen_W]
|
||||||
|
imul ecx,[Screen_H]
|
||||||
|
;ecx = SCREEN_W*SCREEN_H
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[buffer]
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
red:
|
red:
|
||||||
mcall 9, proc_info, -1
|
mcall SF_THREAD_INFO, proc_info, -1
|
||||||
x = 100
|
areacolor = 0x53224466
|
||||||
y = 70
|
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||||
xsize = SCREEN_WIDTH+9
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
ysize = SCREEN_HEIGHT+4
|
add eax, 4
|
||||||
areacolor = 0x54224466
|
push eax ;for test resize
|
||||||
mov eax, 12 ; function 12:tell os about windowdraw
|
add eax, [Screen_H]
|
||||||
mov ebx, 1 ; 1, start of draw
|
lea ecx, [(70 shl 16) + eax]
|
||||||
int 0x40
|
mov ebx, [Screen_W]
|
||||||
mov eax, 48
|
lea ebx, [(100 shl 16) + 9 + ebx]
|
||||||
mov ebx, 4
|
mcall SF_CREATE_WINDOW,,, areacolor,, window_title
|
||||||
int 0x40
|
|
||||||
lea ecx, [(y SHL 16) + ysize + eax]
|
|
||||||
xor eax, eax ; function 0 : define and draw window
|
|
||||||
mov ebx, (x SHL 16) + xsize ; [x start] *65536 + [x size]
|
|
||||||
mov edx, areacolor ; color of work area RRGGBB
|
|
||||||
mov edi, window_title
|
|
||||||
int 0x40
|
|
||||||
mov eax, 12 ; end of redraw
|
|
||||||
mov ebx, 2
|
|
||||||
int 0x40
|
|
||||||
|
|
||||||
|
;test resize
|
||||||
|
pop eax
|
||||||
|
cmp dword[proc_info.box.height],0
|
||||||
|
je .resize_end
|
||||||
|
sub eax,[proc_info.box.height]
|
||||||
|
neg eax
|
||||||
|
cmp eax,[Screen_H]
|
||||||
|
je .end_h
|
||||||
|
cmp eax,32 ;min height
|
||||||
|
jge @f
|
||||||
|
mov eax,32
|
||||||
|
@@:
|
||||||
|
mov [Screen_H],eax
|
||||||
|
xor eax,eax
|
||||||
|
mov [Screen_W],eax
|
||||||
|
.end_h:
|
||||||
|
|
||||||
|
mov eax,[proc_info.box.width]
|
||||||
|
sub eax,9
|
||||||
|
mov [lost_bytes],eax
|
||||||
|
and eax,0xffff-(SIMD_BYTES-1)
|
||||||
|
cmp eax,[Screen_W]
|
||||||
|
je .resize_end
|
||||||
|
cmp eax,64 ;min width
|
||||||
|
jge @f
|
||||||
|
mov eax,64
|
||||||
|
@@:
|
||||||
|
mov [Screen_W],eax
|
||||||
|
|
||||||
|
call OnResize
|
||||||
|
.resize_end:
|
||||||
|
|
||||||
|
mcall SF_REDRAW, SSF_END_DRAW ; end of redraw
|
||||||
|
|
||||||
|
align 4
|
||||||
MAIN:
|
MAIN:
|
||||||
test [proc_info.wnd_state], 0x04
|
test [proc_info.wnd_state], 0x04
|
||||||
jnz still
|
jnz still
|
||||||
@@ -291,11 +343,15 @@ MAIN:
|
|||||||
|
|
||||||
cmp eax, 5
|
cmp eax, 5
|
||||||
jb .new_particle
|
jb .new_particle
|
||||||
cmp eax, SCREEN_WIDTH - 5
|
mov edx, [Screen_W]
|
||||||
|
sub edx, 5
|
||||||
|
cmp eax, edx
|
||||||
jge .new_particle
|
jge .new_particle
|
||||||
cmp ebx, 5
|
cmp ebx, 5
|
||||||
jb .new_particle
|
jb .new_particle
|
||||||
cmp ebx, SCREEN_HEIGHT - 5
|
mov edx, [Screen_H]
|
||||||
|
sub edx, 5
|
||||||
|
cmp ebx, edx
|
||||||
jl .part_ok
|
jl .part_ok
|
||||||
|
|
||||||
.new_particle:
|
.new_particle:
|
||||||
@@ -303,9 +359,11 @@ MAIN:
|
|||||||
jmp .advance_particles
|
jmp .advance_particles
|
||||||
|
|
||||||
.part_ok:
|
.part_ok:
|
||||||
imul edi, ebx, SCREEN_WIDTH
|
mov edi, ebx
|
||||||
|
imul edi, [Screen_W]
|
||||||
mov dl, [ebp+COLOR_OFFSET]
|
mov dl, [ebp+COLOR_OFFSET]
|
||||||
mov [buffer+eax+edi], dl
|
add eax,[buffer]
|
||||||
|
mov [eax+edi], dl
|
||||||
|
|
||||||
mov eax, [ebp+X_SPEED_OFFSET]
|
mov eax, [ebp+X_SPEED_OFFSET]
|
||||||
add [ebp+X_OFFSET], eax
|
add [ebp+X_OFFSET], eax
|
||||||
@@ -324,6 +382,7 @@ MAIN:
|
|||||||
shade
|
shade
|
||||||
; jmp .copy_buffer_to_video
|
; jmp .copy_buffer_to_video
|
||||||
blur_prepare
|
blur_prepare
|
||||||
|
mov eax, [Screen_W]
|
||||||
test dword [blur_right_flag] , 0x800000
|
test dword [blur_right_flag] , 0x800000
|
||||||
jnz .do_blur_right
|
jnz .do_blur_right
|
||||||
blur
|
blur
|
||||||
@@ -339,22 +398,32 @@ MAIN:
|
|||||||
|
|
||||||
.copy_buffer_to_video:
|
.copy_buffer_to_video:
|
||||||
|
|
||||||
mcall 48, 4
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
lea edx, [(5 SHL 16) + eax]
|
lea edx, [(5 shl 16) + eax]
|
||||||
|
|
||||||
mov eax, 65
|
|
||||||
mov ebx, buffer
|
|
||||||
mov ecx, (SCREEN_WIDTH SHL 16) + SCREEN_HEIGHT
|
|
||||||
push 8
|
push 8
|
||||||
pop esi
|
pop esi
|
||||||
mov edi, pal
|
|
||||||
xor ebp, ebp
|
xor ebp, ebp
|
||||||
int 0x40
|
mov ecx, [Screen_W]
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [Screen_H]
|
||||||
|
mcall SF_PUT_IMAGE_EXT, [buffer],,,, pal
|
||||||
|
|
||||||
|
and [lost_bytes], SIMD_BYTES-1
|
||||||
|
jz still
|
||||||
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
|
mov ecx, eax
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [Screen_H]
|
||||||
|
mov ebx, [Screen_W]
|
||||||
|
add ebx, 5 ;left border
|
||||||
|
shl ebx, 16
|
||||||
|
add ebx, [lost_bytes]
|
||||||
|
xor edx, edx
|
||||||
|
mcall SF_DRAW_RECT
|
||||||
|
|
||||||
|
align 4
|
||||||
still:
|
still:
|
||||||
mov eax, 11 ; Test if there is an event in the queue.
|
mcall SF_WAIT_EVENT_TIMEOUT, 1
|
||||||
int 0x40
|
|
||||||
|
|
||||||
dec eax ; redraw request ?
|
dec eax ; redraw request ?
|
||||||
jz red
|
jz red
|
||||||
@@ -365,10 +434,9 @@ still:
|
|||||||
|
|
||||||
jmp MAIN
|
jmp MAIN
|
||||||
|
|
||||||
|
align 4
|
||||||
key:
|
key:
|
||||||
mov eax, 2
|
mcall SF_GET_KEY
|
||||||
int 0x40
|
|
||||||
; cmp ah, 1 ; Test Esc in Scan
|
; cmp ah, 1 ; Test Esc in Scan
|
||||||
; je close_app
|
; je close_app
|
||||||
cmp ah, 27 ; Test Esc in ASCII
|
cmp ah, 27 ; Test Esc in ASCII
|
||||||
@@ -378,8 +446,7 @@ key:
|
|||||||
button:
|
button:
|
||||||
; we have only one button, close
|
; we have only one button, close
|
||||||
close_app:
|
close_app:
|
||||||
mov eax, -1 ; close this program
|
mcall SF_TERMINATE_PROCESS
|
||||||
int 0x40
|
|
||||||
|
|
||||||
init_particle:
|
init_particle:
|
||||||
rdtsc
|
rdtsc
|
||||||
@@ -389,7 +456,7 @@ init_particle:
|
|||||||
call rand
|
call rand
|
||||||
cdq
|
cdq
|
||||||
;xor dx, dx
|
;xor dx, dx
|
||||||
mov ebx, SCREEN_WIDTH
|
mov ebx, [Screen_W]
|
||||||
div ebx
|
div ebx
|
||||||
shl edx, 6
|
shl edx, 6
|
||||||
mov [4 + global_x], edx
|
mov [4 + global_x], edx
|
||||||
@@ -397,7 +464,7 @@ init_particle:
|
|||||||
call rand
|
call rand
|
||||||
cdq
|
cdq
|
||||||
;xor dx, dx
|
;xor dx, dx
|
||||||
mov ebx, SCREEN_HEIGHT
|
mov ebx, [Screen_H]
|
||||||
div ebx
|
div ebx
|
||||||
shl edx, 6
|
shl edx, 6
|
||||||
mov [4 + global_y], edx
|
mov [4 + global_y], edx
|
||||||
@@ -444,7 +511,8 @@ proc_info process_information
|
|||||||
align 16
|
align 16
|
||||||
pal rb 256 * 4
|
pal rb 256 * 4
|
||||||
align SIMD_BYTES
|
align SIMD_BYTES
|
||||||
buffer rb SCREEN_WIDTH * SCREEN_HEIGHT
|
buffer dd 0
|
||||||
E_END:
|
align 4
|
||||||
rd 0x200
|
rd 1024
|
||||||
stacktop:
|
stacktop:
|
||||||
|
E_END:
|
@@ -1,5 +1,5 @@
|
|||||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR")
|
||||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||||
add_include(tup.getvariantdir())
|
add_include(tup.getvariantdir())
|
||||||
|
|
@@ -1,48 +1,112 @@
|
|||||||
; Originally written by Jarek Pelczar
|
; Originally written by Jarek Pelczar
|
||||||
include "lang.inc"
|
include "lang.inc"
|
||||||
include "..\..\..\macros.inc"
|
include "..\..\macros.inc"
|
||||||
|
include "..\..\KOSfuncs.inc"
|
||||||
|
|
||||||
WND_SIZE_X = 320
|
KOS_APP_START
|
||||||
WND_SIZE_Y = 200
|
|
||||||
|
WND_SIZE_X dd 640
|
||||||
|
WND_SIZE_Y dd 400
|
||||||
|
|
||||||
|
if lang eq ru_RU
|
||||||
|
title db '<27>« §¬ ',0
|
||||||
|
else
|
||||||
|
title db 'Plasma',0
|
||||||
|
end if
|
||||||
|
|
||||||
MEOS_APP_START
|
|
||||||
CODE
|
CODE
|
||||||
|
mcall SF_SYS_MISC,SSF_HEAP_INIT
|
||||||
|
mov ecx,[WND_SIZE_X]
|
||||||
|
imul ecx,[WND_SIZE_Y]
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [virtual_screen_8],eax
|
||||||
|
|
||||||
fninit
|
fninit
|
||||||
mcall 40,101b
|
mcall SF_SET_EVENTS_MASK, 101b
|
||||||
call init_palette
|
call init_palette
|
||||||
call init_texture
|
call init_texture
|
||||||
jmp .paint_window
|
jmp .paint_window
|
||||||
.event_loop:
|
.event_loop:
|
||||||
mcall 23,1
|
mcall SF_WAIT_EVENT_TIMEOUT, 1
|
||||||
test eax,eax
|
test eax,eax
|
||||||
je .draw_screen
|
je .draw_screen
|
||||||
dec eax
|
dec eax
|
||||||
je .paint_window
|
je .paint_window
|
||||||
|
|
||||||
or eax,-1
|
mcall SF_TERMINATE_PROCESS
|
||||||
mcall
|
|
||||||
|
|
||||||
.draw_screen:
|
.draw_screen:
|
||||||
xor ebp,ebp
|
xor ebp,ebp
|
||||||
mcall 65,virtual_screen_8,<WND_SIZE_X,WND_SIZE_Y>,0,8,_palette
|
mov ecx,[WND_SIZE_X]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[WND_SIZE_Y]
|
||||||
|
mcall SF_PUT_IMAGE_EXT, [virtual_screen_8],,0,8,_palette
|
||||||
call rotate_pal
|
call rotate_pal
|
||||||
jmp .event_loop
|
jmp .event_loop
|
||||||
|
|
||||||
.paint_window:
|
.paint_window:
|
||||||
mcall 12,1
|
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||||
|
|
||||||
mcall 48,4 ; get skin height
|
;if window resize
|
||||||
lea ecx,[eax + (110 shl 16) + WND_SIZE_Y + 4]
|
mcall SF_THREAD_INFO,procinfo,-1
|
||||||
|
cmp dword[procinfo.box.height],0
|
||||||
|
je .resize_end
|
||||||
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
|
add eax,4
|
||||||
|
sub eax,[procinfo.box.height]
|
||||||
|
neg eax
|
||||||
|
cmp eax,[WND_SIZE_Y]
|
||||||
|
je .end_h
|
||||||
|
cmp eax,32 ;min height
|
||||||
|
jge @f
|
||||||
|
mov eax,32
|
||||||
|
@@:
|
||||||
|
mov [WND_SIZE_Y],eax
|
||||||
|
xor eax,eax
|
||||||
|
mov [WND_SIZE_X],eax
|
||||||
|
.end_h:
|
||||||
|
|
||||||
|
mov eax,[procinfo.box.width]
|
||||||
|
sub eax,9
|
||||||
|
cmp eax,[WND_SIZE_X]
|
||||||
|
je .resize_end
|
||||||
|
cmp eax,64 ;min width
|
||||||
|
jge @f
|
||||||
|
mov eax,64
|
||||||
|
@@:
|
||||||
|
mov [WND_SIZE_X],eax
|
||||||
|
|
||||||
|
call OnResize
|
||||||
|
call init_texture
|
||||||
|
.resize_end:
|
||||||
|
|
||||||
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
|
lea ecx,[eax + (110 shl 16) + 4]
|
||||||
|
add ecx,[WND_SIZE_Y]
|
||||||
mov edi,title
|
mov edi,title
|
||||||
mcall 0,<110,WND_SIZE_X+9>,,0x74000000
|
mov ebx,[WND_SIZE_X]
|
||||||
|
add ebx,(110 shl 16)+9
|
||||||
|
mcall SF_CREATE_WINDOW,,,0x73000000
|
||||||
|
|
||||||
xor ebp,ebp
|
xor ebp,ebp
|
||||||
mcall 65,virtual_screen_8,<WND_SIZE_X,WND_SIZE_Y>,0,8,_palette
|
mov ecx,[WND_SIZE_X]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[WND_SIZE_Y]
|
||||||
|
mcall SF_PUT_IMAGE_EXT, [virtual_screen_8],,0,8,_palette
|
||||||
|
|
||||||
mcall 12,2
|
mcall SF_REDRAW, SSF_END_DRAW
|
||||||
|
|
||||||
jmp .event_loop
|
jmp .event_loop
|
||||||
|
|
||||||
|
align 4
|
||||||
|
OnResize:
|
||||||
|
mov ecx,[WND_SIZE_X]
|
||||||
|
imul ecx,[WND_SIZE_Y]
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [virtual_screen_8],eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
init_palette:
|
init_palette:
|
||||||
mov edi,_palette
|
mov edi,_palette
|
||||||
mov ecx,64
|
mov ecx,64
|
||||||
@@ -92,7 +156,7 @@ init_texture:
|
|||||||
mov [_fpom16],180
|
mov [_fpom16],180
|
||||||
fidiv [_fpom16]
|
fidiv [_fpom16]
|
||||||
fstp [_st_rad]
|
fstp [_st_rad]
|
||||||
mov edi,virtual_screen_8
|
mov edi,[virtual_screen_8]
|
||||||
cdq
|
cdq
|
||||||
.itex_vertical:
|
.itex_vertical:
|
||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
@@ -120,10 +184,10 @@ init_texture:
|
|||||||
inc eax
|
inc eax
|
||||||
stosb
|
stosb
|
||||||
inc ecx
|
inc ecx
|
||||||
cmp ecx,WND_SIZE_X
|
cmp ecx,[WND_SIZE_X]
|
||||||
jne .itex_horizontal
|
jne .itex_horizontal
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx,WND_SIZE_Y
|
cmp edx,[WND_SIZE_Y]
|
||||||
jne .itex_vertical
|
jne .itex_vertical
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -141,7 +205,6 @@ rotate_pal:
|
|||||||
DATA
|
DATA
|
||||||
_multiplier dd 63.5
|
_multiplier dd 63.5
|
||||||
|
|
||||||
title db 'Plasma',0
|
|
||||||
|
|
||||||
UDATA
|
UDATA
|
||||||
_fpom32 rd 1
|
_fpom32 rd 1
|
||||||
@@ -149,7 +212,7 @@ UDATA
|
|||||||
_st_rad rd 1
|
_st_rad rd 1
|
||||||
_palette: rd 256
|
_palette: rd 256
|
||||||
|
|
||||||
virtual_screen_8:
|
virtual_screen_8 rd 1
|
||||||
rb WND_SIZE_X*WND_SIZE_Y
|
procinfo process_information
|
||||||
|
|
||||||
MEOS_APP_END
|
KOS_APP_END
|
7
programs/demos/tube/Tupfile.lua
Normal file
7
programs/demos/tube/Tupfile.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||||
|
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR")
|
||||||
|
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||||
|
add_include(tup.getvariantdir())
|
||||||
|
|
||||||
|
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en_US" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
|
||||||
|
tup.rule({"tube.asm", extra_inputs = {"lang.inc"}}, FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "tube")
|
@@ -1,2 +0,0 @@
|
|||||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
|
||||||
tup.rule("tube.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "tube")
|
|
@@ -1,264 +0,0 @@
|
|||||||
|
|
||||||
; (<28>) ( ) <20> ) ( ) 256b intro by baze/3SC for Syndeecate 2001
|
|
||||||
; <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> loveC: thanks, Serzh: eat my socks dude ;]
|
|
||||||
; ( ) ( ) ( ) ( ) e-mail: baze@stonline.sk, web: www.3SC.sk
|
|
||||||
|
|
||||||
; Menuet port by VT
|
|
||||||
|
|
||||||
appname equ 'TUBE - FPU'
|
|
||||||
|
|
||||||
use32
|
|
||||||
org 0x0
|
|
||||||
|
|
||||||
db 'MENUET01'
|
|
||||||
dd 0x01
|
|
||||||
dd START
|
|
||||||
dd I_END
|
|
||||||
dd 0x40000
|
|
||||||
dd 0x40000
|
|
||||||
dd 0,0
|
|
||||||
|
|
||||||
include '..\..\..\macros.inc'
|
|
||||||
|
|
||||||
START:
|
|
||||||
|
|
||||||
call draw_window
|
|
||||||
|
|
||||||
call init_tube
|
|
||||||
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
still:
|
|
||||||
|
|
||||||
pop ebx
|
|
||||||
|
|
||||||
call MAIN
|
|
||||||
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
mov eax,23
|
|
||||||
mov ebx,1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp eax,1
|
|
||||||
jne no_red
|
|
||||||
call draw_window
|
|
||||||
jmp still
|
|
||||||
no_red:
|
|
||||||
|
|
||||||
cmp eax,0
|
|
||||||
je still
|
|
||||||
|
|
||||||
or eax,-1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
SCREEN equ 160
|
|
||||||
PIXBUF equ 200h
|
|
||||||
EYE equ EYE_P-2
|
|
||||||
|
|
||||||
|
|
||||||
MAIN:
|
|
||||||
|
|
||||||
add bh,10;8
|
|
||||||
mov edi,PIXBUF
|
|
||||||
fadd dword [di-PIXBUF+TEXUV-4]
|
|
||||||
push di
|
|
||||||
mov dx,-80
|
|
||||||
|
|
||||||
TUBEY:
|
|
||||||
|
|
||||||
mov bp,-160
|
|
||||||
|
|
||||||
TUBEX:
|
|
||||||
|
|
||||||
mov si,TEXUV
|
|
||||||
fild word [si-TEXUV+EYE]
|
|
||||||
mov [si],bp
|
|
||||||
fild word [si]
|
|
||||||
mov [si],dx
|
|
||||||
fild word [si]
|
|
||||||
mov cl,2
|
|
||||||
|
|
||||||
ROTATE:
|
|
||||||
|
|
||||||
fld st3
|
|
||||||
fsincos
|
|
||||||
fld st2
|
|
||||||
fmul st0,st1
|
|
||||||
fld st4
|
|
||||||
fmul st0,st3
|
|
||||||
db 0xde,0xe9 ; fsubp st1,st0
|
|
||||||
db 0xd9,0xcb ; fxch st3
|
|
||||||
fmulp st2,st0
|
|
||||||
fmulp st3,st0
|
|
||||||
faddp st2,st0
|
|
||||||
db 0xd9,0xca ; fxch st2
|
|
||||||
|
|
||||||
loop ROTATE
|
|
||||||
|
|
||||||
fld st1
|
|
||||||
db 0xdc,0xc8 ; fmul st0,st
|
|
||||||
fld st1
|
|
||||||
db 0xdc,0xc8 ; fmul st0,st
|
|
||||||
faddp st1,st0
|
|
||||||
fsqrt
|
|
||||||
db 0xde,0xfb ; fdivp st3,st0
|
|
||||||
fpatan
|
|
||||||
fimul word [si-4]
|
|
||||||
fistp word [si]
|
|
||||||
fimul word [si-4]
|
|
||||||
fistp word [si+1]
|
|
||||||
mov si,[si]
|
|
||||||
|
|
||||||
lea ax,[bx+si]
|
|
||||||
add al,ah
|
|
||||||
and al,64
|
|
||||||
mov al,-5
|
|
||||||
jz STORE_1
|
|
||||||
|
|
||||||
shl si,2
|
|
||||||
lea ax,[bx+si]
|
|
||||||
sub al,ah
|
|
||||||
mov al,-16
|
|
||||||
jns STORE_1
|
|
||||||
|
|
||||||
shl si,1
|
|
||||||
mov al,-48
|
|
||||||
|
|
||||||
STORE_1:
|
|
||||||
|
|
||||||
; add al,[ebx+esi+0x80000]
|
|
||||||
add [di],al
|
|
||||||
inc di
|
|
||||||
|
|
||||||
inc bp
|
|
||||||
cmp bp,160
|
|
||||||
|
|
||||||
EYE_P:
|
|
||||||
|
|
||||||
jnz TUBEX
|
|
||||||
inc dx
|
|
||||||
cmp dx,80
|
|
||||||
jnz TUBEY
|
|
||||||
|
|
||||||
call display_image
|
|
||||||
|
|
||||||
pop si
|
|
||||||
mov ch,SCREEN*320/256
|
|
||||||
|
|
||||||
BLUR:
|
|
||||||
|
|
||||||
inc si
|
|
||||||
sar byte [si],2
|
|
||||||
loop BLUR
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
display_image:
|
|
||||||
|
|
||||||
pusha
|
|
||||||
|
|
||||||
mov esi,PIXBUF
|
|
||||||
mov edi,0x10000
|
|
||||||
newp:
|
|
||||||
movzx edx,byte [esi]
|
|
||||||
shl edx,4
|
|
||||||
; mov dh,dl
|
|
||||||
mov [edi],edx
|
|
||||||
|
|
||||||
add edi,3
|
|
||||||
inc esi
|
|
||||||
|
|
||||||
cmp esi,320*160+PIXBUF
|
|
||||||
jbe newp
|
|
||||||
|
|
||||||
mov eax,7
|
|
||||||
mov ecx,320*65536+160
|
|
||||||
xor edx,edx
|
|
||||||
mov ebx,0x10000
|
|
||||||
mcall
|
|
||||||
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
draw_window:
|
|
||||||
|
|
||||||
pusha
|
|
||||||
|
|
||||||
mcall 12, 1
|
|
||||||
mcall 48, 4 ;get skin width
|
|
||||||
lea ecx,[100*65536+164+eax]
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,100*65536+329
|
|
||||||
mov edx,0x74000000
|
|
||||||
mov edi,title
|
|
||||||
mcall
|
|
||||||
mcall 12, 2
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
|
|
||||||
title db appname,0
|
|
||||||
|
|
||||||
db 41,0,0xC3,0x3C
|
|
||||||
|
|
||||||
TEXUV:
|
|
||||||
|
|
||||||
init_tube:
|
|
||||||
|
|
||||||
mov ecx,256
|
|
||||||
|
|
||||||
PAL1:
|
|
||||||
|
|
||||||
mov dx,3C8h
|
|
||||||
mov ax,cx
|
|
||||||
inc dx
|
|
||||||
sar al,1
|
|
||||||
js PAL2
|
|
||||||
mul al
|
|
||||||
shr ax,6
|
|
||||||
|
|
||||||
PAL2:
|
|
||||||
|
|
||||||
mov al,0
|
|
||||||
jns PAL3
|
|
||||||
sub al,cl
|
|
||||||
shr al,1
|
|
||||||
shr al,1
|
|
||||||
|
|
||||||
PAL3:
|
|
||||||
|
|
||||||
mov bx,cx
|
|
||||||
mov [ebx+0x1000],bh
|
|
||||||
loop PAL1
|
|
||||||
mov ecx,256
|
|
||||||
|
|
||||||
TEX:
|
|
||||||
|
|
||||||
mov bx,cx
|
|
||||||
add ax,cx
|
|
||||||
rol ax,cl
|
|
||||||
mov dh,al
|
|
||||||
sar dh,5
|
|
||||||
adc dl,dh
|
|
||||||
adc dl,[ebx+255+0x1000]
|
|
||||||
shr dl,1
|
|
||||||
mov [ebx+0x1000],dl
|
|
||||||
not bh
|
|
||||||
mov [ebx+0x1000],dl
|
|
||||||
loop TEX
|
|
||||||
|
|
||||||
fninit
|
|
||||||
fldz
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
I_END:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
321
programs/demos/tube/tube.asm
Normal file
321
programs/demos/tube/tube.asm
Normal file
@@ -0,0 +1,321 @@
|
|||||||
|
; 256b intro by baze/3SC for Syndeecate 2001
|
||||||
|
; loveC: thanks, Serzh: eat my socks dude ;]
|
||||||
|
; e-mail: baze@stonline.sk, web: www.3SC.sk
|
||||||
|
|
||||||
|
; Menuet port by VT
|
||||||
|
|
||||||
|
|
||||||
|
use32
|
||||||
|
org 0
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1,START,image_end,memory_end,stacktop,0,0
|
||||||
|
|
||||||
|
include '../../macros.inc'
|
||||||
|
include '../../KOSfuncs.inc'
|
||||||
|
include 'lang.inc'
|
||||||
|
|
||||||
|
if lang eq ru_RU
|
||||||
|
title db '<27><>㡠 - FPU',0
|
||||||
|
else
|
||||||
|
title db 'Tube - FPU',0
|
||||||
|
end if
|
||||||
|
|
||||||
|
SCREEN_W dd 640-10 ;10 px for borders
|
||||||
|
SCREEN_H dd 400-10
|
||||||
|
|
||||||
|
align 4
|
||||||
|
START:
|
||||||
|
mcall SF_SYS_MISC,SSF_HEAP_INIT
|
||||||
|
mov ecx,[SCREEN_W]
|
||||||
|
imul ecx,[SCREEN_H]
|
||||||
|
;ecx = SCREEN_W*SCREEN_H
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [PIXBUF],eax
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [buf1],eax
|
||||||
|
lea ecx,[ecx+2*ecx]
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||||
|
mov [buf2],eax
|
||||||
|
|
||||||
|
call draw_window
|
||||||
|
call init_tube
|
||||||
|
push ebx
|
||||||
|
|
||||||
|
still:
|
||||||
|
pop ebx
|
||||||
|
call MAIN
|
||||||
|
push ebx
|
||||||
|
|
||||||
|
mcall SF_WAIT_EVENT_TIMEOUT,1
|
||||||
|
|
||||||
|
cmp eax,EV_REDRAW
|
||||||
|
jne no_red
|
||||||
|
call draw_window
|
||||||
|
jmp still
|
||||||
|
no_red:
|
||||||
|
|
||||||
|
or eax,eax
|
||||||
|
jz still
|
||||||
|
|
||||||
|
mcall SF_TERMINATE_PROCESS
|
||||||
|
|
||||||
|
align 4
|
||||||
|
OnResize:
|
||||||
|
mov ecx,[SCREEN_W]
|
||||||
|
imul ecx,[SCREEN_H]
|
||||||
|
;ecx = SCREEN_W*SCREEN_H
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[PIXBUF]
|
||||||
|
mov [PIXBUF],eax
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[buf1]
|
||||||
|
mov [buf1],eax
|
||||||
|
lea ecx,[ecx+2*ecx]
|
||||||
|
mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[buf2]
|
||||||
|
mov [buf2],eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
MAIN:
|
||||||
|
;edx - coord y
|
||||||
|
;ebp - coord x
|
||||||
|
;edi - pixel buffer
|
||||||
|
add ebx,10 shl 8
|
||||||
|
mov edi,[PIXBUF]
|
||||||
|
fadd dword [TEXUV-4]
|
||||||
|
push edi
|
||||||
|
mov edx,[SCREEN_H]
|
||||||
|
inc edx ;fix (height%2)==1
|
||||||
|
shr edx,1
|
||||||
|
neg edx ;edx=-SCREEN_H/2
|
||||||
|
align 4
|
||||||
|
TUBEY:
|
||||||
|
mov ebp,[SCREEN_W]
|
||||||
|
inc ebp ;fix (width%2)==1
|
||||||
|
shr ebp,1
|
||||||
|
neg ebp ;ebp=-SCREEN_W/2
|
||||||
|
align 4
|
||||||
|
TUBEX:
|
||||||
|
mov esi,TEXUV
|
||||||
|
fild dword [SCREEN_W]
|
||||||
|
fld1
|
||||||
|
fld1
|
||||||
|
faddp
|
||||||
|
fdivp ;st0=SCREEN_W/2
|
||||||
|
mov [esi],ebp
|
||||||
|
fild word [esi]
|
||||||
|
mov [esi],edx
|
||||||
|
fild word [esi]
|
||||||
|
mov cl,2
|
||||||
|
|
||||||
|
ROTATE:
|
||||||
|
fld st3
|
||||||
|
fsincos
|
||||||
|
fld st2
|
||||||
|
fmul st0,st1
|
||||||
|
fld st4
|
||||||
|
fmul st0,st3
|
||||||
|
fsubp st1,st0
|
||||||
|
fxch st3
|
||||||
|
fmulp st2,st0
|
||||||
|
fmulp st3,st0
|
||||||
|
faddp st2,st0
|
||||||
|
fxch st2
|
||||||
|
loop ROTATE
|
||||||
|
|
||||||
|
fld st1
|
||||||
|
db 0xdc,0xc8 ;fmul st0,st ?
|
||||||
|
fld st1
|
||||||
|
db 0xdc,0xc8 ;fmul st0,st ?
|
||||||
|
faddp st1,st0
|
||||||
|
fsqrt
|
||||||
|
|
||||||
|
fdivp st3,st0
|
||||||
|
fpatan
|
||||||
|
fimul word [esi-4]
|
||||||
|
fistp word [esi]
|
||||||
|
fimul word [esi-4]
|
||||||
|
fistp word [esi+1]
|
||||||
|
mov esi,[esi]
|
||||||
|
|
||||||
|
lea eax,[ebx+esi]
|
||||||
|
add al,ah
|
||||||
|
and al,64
|
||||||
|
mov al,-5
|
||||||
|
jz STORE_1
|
||||||
|
|
||||||
|
shl esi,2
|
||||||
|
lea eax,[ebx+esi]
|
||||||
|
sub al,ah
|
||||||
|
mov al,-16
|
||||||
|
jns STORE_1
|
||||||
|
|
||||||
|
shl esi,1
|
||||||
|
mov al,-48
|
||||||
|
|
||||||
|
STORE_1:
|
||||||
|
; add al,[ebx+esi+0x80000]
|
||||||
|
add [edi],al
|
||||||
|
inc edi
|
||||||
|
inc ebp
|
||||||
|
mov eax,[SCREEN_W]
|
||||||
|
shr eax,1 ;eax=SCREEN_W/2
|
||||||
|
cmp ebp,eax
|
||||||
|
|
||||||
|
jnz TUBEX
|
||||||
|
inc edx
|
||||||
|
mov eax,[SCREEN_H]
|
||||||
|
shr eax,1 ;eax=SCREEN_H/2
|
||||||
|
cmp edx,eax
|
||||||
|
jnz TUBEY
|
||||||
|
|
||||||
|
call display_image
|
||||||
|
|
||||||
|
pop esi
|
||||||
|
mov ecx,[SCREEN_W]
|
||||||
|
imul ecx,[SCREEN_H]
|
||||||
|
|
||||||
|
align 4
|
||||||
|
BLUR:
|
||||||
|
inc esi
|
||||||
|
sar byte [esi],2
|
||||||
|
loop BLUR
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
align 4
|
||||||
|
display_image:
|
||||||
|
pusha
|
||||||
|
|
||||||
|
mov esi,[PIXBUF]
|
||||||
|
mov edi,[buf2]
|
||||||
|
mov eax,[SCREEN_W]
|
||||||
|
imul eax,[SCREEN_H]
|
||||||
|
add eax,esi
|
||||||
|
align 4
|
||||||
|
newp:
|
||||||
|
movzx edx,byte [esi]
|
||||||
|
shl edx,4
|
||||||
|
|
||||||
|
mov [edi],edx
|
||||||
|
|
||||||
|
add edi,3
|
||||||
|
inc esi
|
||||||
|
|
||||||
|
cmp esi,eax
|
||||||
|
jbe newp
|
||||||
|
|
||||||
|
xor edx,edx
|
||||||
|
mov ecx,[SCREEN_W]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[SCREEN_H]
|
||||||
|
mcall SF_PUT_IMAGE,[buf2]
|
||||||
|
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
align 4
|
||||||
|
draw_window:
|
||||||
|
pusha
|
||||||
|
|
||||||
|
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||||
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
|
add eax,[SCREEN_H]
|
||||||
|
lea ecx,[100*65536+4+eax]
|
||||||
|
mov ebx,[SCREEN_W]
|
||||||
|
add ebx,(100 shl 16)+9
|
||||||
|
mcall SF_CREATE_WINDOW,,, 0x73000000,,title
|
||||||
|
|
||||||
|
mcall SF_THREAD_INFO,procinfo,-1
|
||||||
|
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||||
|
add eax,4
|
||||||
|
sub eax,[procinfo.box.height]
|
||||||
|
neg eax
|
||||||
|
cmp eax,[SCREEN_H]
|
||||||
|
je .end_h
|
||||||
|
cmp eax,32 ;min height
|
||||||
|
jge @f
|
||||||
|
mov eax,32
|
||||||
|
@@:
|
||||||
|
mov [SCREEN_H],eax
|
||||||
|
xor eax,eax
|
||||||
|
mov [SCREEN_W],eax
|
||||||
|
.end_h:
|
||||||
|
|
||||||
|
mov eax,[procinfo.box.width]
|
||||||
|
sub eax,9
|
||||||
|
cmp eax,[SCREEN_W]
|
||||||
|
je .resize_end
|
||||||
|
cmp eax,64 ;min width
|
||||||
|
jge @f
|
||||||
|
mov eax,64
|
||||||
|
@@:
|
||||||
|
mov [SCREEN_W],eax
|
||||||
|
|
||||||
|
call OnResize
|
||||||
|
.resize_end:
|
||||||
|
|
||||||
|
mcall SF_REDRAW, SSF_END_DRAW
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
db 41,0,0xC3,0x3C
|
||||||
|
TEXUV:
|
||||||
|
rd 1
|
||||||
|
|
||||||
|
align 4
|
||||||
|
init_tube:
|
||||||
|
mov ecx,256
|
||||||
|
mov edi,[buf1]
|
||||||
|
|
||||||
|
PAL1:
|
||||||
|
mov edx,3C8h
|
||||||
|
mov eax,ecx
|
||||||
|
inc edx
|
||||||
|
sar al,1
|
||||||
|
js PAL2
|
||||||
|
mul al
|
||||||
|
shr ax,6
|
||||||
|
|
||||||
|
PAL2:
|
||||||
|
mov al,0
|
||||||
|
jns PAL3
|
||||||
|
sub al,cl
|
||||||
|
shr al,1
|
||||||
|
shr al,1
|
||||||
|
|
||||||
|
PAL3:
|
||||||
|
mov ebx,ecx
|
||||||
|
mov [ebx+edi],bh
|
||||||
|
loop PAL1
|
||||||
|
mov ecx,256
|
||||||
|
|
||||||
|
TEX:
|
||||||
|
mov bx,cx
|
||||||
|
add ax,cx
|
||||||
|
rol ax,cl
|
||||||
|
mov dh,al
|
||||||
|
sar dh,5
|
||||||
|
adc dl,dh
|
||||||
|
adc dl,[ebx+255+edi]
|
||||||
|
shr dl,1
|
||||||
|
mov [ebx+edi],dl
|
||||||
|
not bh
|
||||||
|
mov [ebx+edi],dl
|
||||||
|
loop TEX
|
||||||
|
|
||||||
|
fninit
|
||||||
|
fldz
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
image_end:
|
||||||
|
PIXBUF rd 1
|
||||||
|
buf1 rd 1
|
||||||
|
buf2 rd 1
|
||||||
|
procinfo process_information
|
||||||
|
rb 1024
|
||||||
|
align 4
|
||||||
|
stacktop:
|
||||||
|
memory_end:
|
Reference in New Issue
Block a user