forked from KolibriOS/kolibrios
Apps/tube: Improved code style and readability
- Magic numbers are replaced with constants; - Added copyrights and source to the original; - Removed unnecessary *.bat files. Co-authored-by: Max Logaev <maxlogaev@proton.me>
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix en_US >lang.inc
|
||||
@fasm tube.asm tube
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix ru_RU >lang.inc
|
||||
@fasm tube.asm tube
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -1,228 +1,207 @@
|
||||
; SPDX-License-Identifier: GPL-2.0
|
||||
; Ported tube demo by VT
|
||||
; Copyright (C) 2001 Miloš Bazelides <baze@stonline.sk>
|
||||
; Copyright (C) 2006-2025 KolibriOS team
|
||||
|
||||
; (<28>) ( ) <20> ) ( ) 256b intro by baze/3SC for Syndeecate 2001
|
||||
; <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> loveC: thanks, Serzh: eat my socks dude ;]
|
||||
; ( ) ( ) ( ) ( ) e-mail: baze@stonline.sk, web: www.3SC.sk
|
||||
; Original comments:
|
||||
; 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
|
||||
|
||||
appname equ 'TUBE - FPU'
|
||||
; Original source: https://baze.sk/3sc/files/tube.zip
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 0x01
|
||||
dd START
|
||||
dd I_END
|
||||
dd 0x40000
|
||||
dd 0x40000
|
||||
dd 0,0
|
||||
dd 1,START,image_end,memory_end,stacktop,0,0
|
||||
|
||||
include '..\..\..\macros.inc'
|
||||
include '../../macros.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
|
||||
title db 'Tube - FPU',0
|
||||
|
||||
SCREEN_W equ (640-10) ;10 px for borders
|
||||
SCREEN_H equ (400-10)
|
||||
|
||||
align 4
|
||||
START:
|
||||
|
||||
call draw_window
|
||||
|
||||
call init_tube
|
||||
|
||||
push ebx
|
||||
|
||||
still:
|
||||
|
||||
pop ebx
|
||||
|
||||
call MAIN
|
||||
|
||||
push ebx
|
||||
|
||||
mov eax,23
|
||||
mov ebx,1
|
||||
mcall
|
||||
mcall SF_WAIT_EVENT_TIMEOUT,1
|
||||
|
||||
cmp eax,1
|
||||
cmp eax,EV_REDRAW
|
||||
jne no_red
|
||||
call draw_window
|
||||
jmp still
|
||||
no_red:
|
||||
|
||||
cmp eax,0
|
||||
je still
|
||||
or eax,eax
|
||||
jz still
|
||||
|
||||
or eax,-1
|
||||
mcall
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
SCREEN equ 160
|
||||
PIXBUF equ 200h
|
||||
EYE equ EYE_P-2
|
||||
EYE equ EYE_P-4
|
||||
|
||||
|
||||
align 4
|
||||
MAIN:
|
||||
|
||||
add bh,10;8
|
||||
;edx - coord y
|
||||
;ebp - coord x
|
||||
;edi - pixel buffer
|
||||
add ebx,10 shl 8
|
||||
mov edi,PIXBUF
|
||||
fadd dword [di-PIXBUF+TEXUV-4]
|
||||
push di
|
||||
mov dx,-80
|
||||
fadd dword [TEXUV-4]
|
||||
push edi
|
||||
mov edx,-SCREEN_H/2
|
||||
|
||||
TUBEY:
|
||||
|
||||
mov bp,-160
|
||||
mov ebp,-SCREEN_W/2
|
||||
|
||||
TUBEX:
|
||||
|
||||
mov si,TEXUV
|
||||
fild word [si-TEXUV+EYE]
|
||||
mov [si],bp
|
||||
fild word [si]
|
||||
mov [si],dx
|
||||
fild word [si]
|
||||
mov esi,TEXUV
|
||||
fild word [EYE]
|
||||
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
|
||||
db 0xde,0xe9 ; fsubp st1,st0
|
||||
db 0xd9,0xcb ; fxch st3
|
||||
fsubp st1,st0
|
||||
fxch st3
|
||||
fmulp st2,st0
|
||||
fmulp st3,st0
|
||||
faddp st2,st0
|
||||
db 0xd9,0xca ; fxch st2
|
||||
|
||||
fxch st2
|
||||
loop ROTATE
|
||||
|
||||
fld st1
|
||||
db 0xdc,0xc8 ; fmul st0,st
|
||||
fmul st0,st0
|
||||
fld st1
|
||||
db 0xdc,0xc8 ; fmul st0,st
|
||||
fmul st0,st0
|
||||
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]
|
||||
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 si,2
|
||||
lea ax,[bx+si]
|
||||
shl esi,2
|
||||
lea eax,[ebx+esi]
|
||||
sub al,ah
|
||||
mov al,-16
|
||||
jns STORE_1
|
||||
|
||||
shl si,1
|
||||
shl esi,1
|
||||
mov al,-48
|
||||
|
||||
STORE_1:
|
||||
|
||||
; add al,[ebx+esi+0x80000]
|
||||
add [di],al
|
||||
inc di
|
||||
|
||||
inc bp
|
||||
cmp bp,160
|
||||
add [edi],al
|
||||
inc edi
|
||||
inc ebp
|
||||
cmp ebp,SCREEN_W/2
|
||||
|
||||
EYE_P:
|
||||
|
||||
jnz TUBEX
|
||||
inc dx
|
||||
cmp dx,80
|
||||
inc edx
|
||||
cmp edx,SCREEN_H/2
|
||||
jnz TUBEY
|
||||
|
||||
call display_image
|
||||
|
||||
pop si
|
||||
mov ch,SCREEN*320/256
|
||||
pop esi
|
||||
mov ecx,SCREEN_H*SCREEN_W
|
||||
|
||||
align 4
|
||||
BLUR:
|
||||
|
||||
inc si
|
||||
sar byte [si],2
|
||||
inc esi
|
||||
sar byte [esi],2
|
||||
loop BLUR
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
display_image:
|
||||
|
||||
pusha
|
||||
|
||||
mov esi,PIXBUF
|
||||
mov edi,0x10000
|
||||
newp:
|
||||
mov edi,buf2
|
||||
align 4
|
||||
newp:
|
||||
movzx edx,byte [esi]
|
||||
shl edx,4
|
||||
; mov dh,dl
|
||||
|
||||
mov [edi],edx
|
||||
|
||||
add edi,3
|
||||
inc esi
|
||||
|
||||
cmp esi,320*160+PIXBUF
|
||||
cmp esi,PIXBUF+SCREEN_W*SCREEN_H
|
||||
jbe newp
|
||||
|
||||
mov eax,7
|
||||
mov ecx,320*65536+160
|
||||
xor edx,edx
|
||||
mov ebx,0x10000
|
||||
mcall
|
||||
mcall SF_PUT_IMAGE,buf2,<SCREEN_W,SCREEN_H>
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
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
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
|
||||
add eax,SCREEN_H
|
||||
lea ecx,[100*65536+4+eax]
|
||||
mcall SF_CREATE_WINDOW,100*65536+SCREEN_W+9,, 0x74000000,,title
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popa
|
||||
ret
|
||||
|
||||
title db appname,0
|
||||
|
||||
db 41,0,0xC3,0x3C
|
||||
|
||||
align 4
|
||||
db 41,0,0xC3,0x3C
|
||||
TEXUV:
|
||||
rd 1
|
||||
|
||||
align 4
|
||||
init_tube:
|
||||
|
||||
mov ecx,256
|
||||
|
||||
PAL1:
|
||||
|
||||
mov dx,3C8h
|
||||
mov ax,cx
|
||||
inc dx
|
||||
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
|
||||
@@ -230,25 +209,23 @@ PAL2:
|
||||
shr al,1
|
||||
|
||||
PAL3:
|
||||
|
||||
mov bx,cx
|
||||
mov [ebx+0x1000],bh
|
||||
mov ebx,ecx
|
||||
mov [ebx+buf1],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]
|
||||
adc dl,[ebx+255+buf1]
|
||||
shr dl,1
|
||||
mov [ebx+0x1000],dl
|
||||
mov [ebx+buf1],dl
|
||||
not bh
|
||||
mov [ebx+0x1000],dl
|
||||
mov [ebx+buf1],dl
|
||||
loop TEX
|
||||
|
||||
fninit
|
||||
@@ -256,9 +233,14 @@ TEX:
|
||||
|
||||
ret
|
||||
|
||||
align 4
|
||||
image_end:
|
||||
|
||||
I_END:
|
||||
|
||||
|
||||
|
||||
PIXBUF rb SCREEN_W*SCREEN_H
|
||||
buf1 rb SCREEN_W*SCREEN_H
|
||||
buf2 rb SCREEN_W*SCREEN_H*3
|
||||
|
||||
rb 1024
|
||||
align 4
|
||||
stacktop:
|
||||
memory_end:
|
||||
|
Reference in New Issue
Block a user