Apps/tube: Improved code style and readability
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 5m20s

- 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:
2025-03-11 23:44:56 +02:00
committed by Max Logaev
parent abb7442055
commit c77ec910a2
4 changed files with 179 additions and 208 deletions

View File

@@ -1,2 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("tube.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "tube") tup.rule("tube.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "tube")

View File

@@ -1,5 +0,0 @@
@erase lang.inc
@echo lang fix en_US >lang.inc
@fasm tube.asm tube
@erase lang.inc
@pause

View File

@@ -1,5 +0,0 @@
@erase lang.inc
@echo lang fix ru_RU >lang.inc
@fasm tube.asm tube
@erase lang.inc
@pause

View File

@@ -1,264 +1,245 @@
; SPDX-License-Identifier: GPL-2.0
; Ported tube demo by VT
; Copyright (C) 2006-2025 KolibriOS team
; (<28>) ( ) <20> ) ( ) 256b intro by baze/3SC for Syndeecate 2001 ; Original comments:
; <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> loveC: thanks, Serzh: eat my socks dude ;] ; 256b intro by baze/3SC for Syndeecate 2001
; ( ) ( ) ( ) ( ) e-mail: baze@stonline.sk, web: www.3SC.sk ; loveC: thanks, Serzh: eat my socks dude ;]
; e-mail: baze@stonline.sk, web: www.3SC.sk
; Menuet port by VT ; Original source: https://baze.sk/3sc/files/tube.zip
appname equ 'TUBE - FPU'
use32 use32
org 0x0 org 0
db 'MENUET01'
dd 1,START,image_end,memory_end,stacktop,0,0
db 'MENUET01' include '../../macros.inc'
dd 0x01 include '../../KOSfuncs.inc'
dd START
dd I_END
dd 0x40000
dd 0x40000
dd 0,0
include '..\..\..\macros.inc' title db 'Tube - FPU',0
SCREEN_W equ (640-10) ;10 px for borders
SCREEN_H equ (400-10)
align 4
START: START:
call draw_window
call draw_window call init_tube
push ebx
call init_tube
push ebx
still: still:
pop ebx
call MAIN
push ebx
pop ebx mcall SF_WAIT_EVENT_TIMEOUT,1
call MAIN cmp eax,EV_REDRAW
jne no_red
call draw_window
jmp still
no_red:
push ebx or eax,eax
jz still
mov eax,23 mcall SF_TERMINATE_PROCESS
mov ebx,1
mcall
cmp eax,1 EYE equ EYE_P-4
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
align 4
MAIN: MAIN:
;edx - coord y
add bh,10;8 ;ebp - coord x
mov edi,PIXBUF ;edi - pixel buffer
fadd dword [di-PIXBUF+TEXUV-4] add ebx,10 shl 8
push di mov edi,PIXBUF
mov dx,-80 fadd dword [TEXUV-4]
push edi
mov edx,-SCREEN_H/2
TUBEY: TUBEY:
mov ebp,-SCREEN_W/2
mov bp,-160
TUBEX: TUBEX:
mov esi,TEXUV
mov si,TEXUV fild word [EYE]
fild word [si-TEXUV+EYE] mov [esi],ebp
mov [si],bp fild word [esi]
fild word [si] mov [esi],edx
mov [si],dx fild word [esi]
fild word [si] mov cl,2
mov cl,2
ROTATE: 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 st3 fld st1
fsincos db 0xdc,0xc8 ;fmul st0,st ?
fld st2 fld st1
fmul st0,st1 db 0xdc,0xc8 ;fmul st0,st ?
fld st4 faddp st1,st0
fmul st0,st3 fsqrt
db 0xde,0xe9 ; fsubp st1,st0
db 0xd9,0xcb ; fxch st3 fdivp st3,st0
fmulp st2,st0 fpatan
fmulp st3,st0 fimul word [esi-4]
faddp st2,st0 fistp word [esi]
db 0xd9,0xca ; fxch st2 fimul word [esi-4]
fistp word [esi+1]
mov esi,[esi]
loop ROTATE lea eax,[ebx+esi]
add al,ah
and al,64
mov al,-5
jz STORE_1
fld st1 shl esi,2
db 0xdc,0xc8 ; fmul st0,st lea eax,[ebx+esi]
fld st1 sub al,ah
db 0xdc,0xc8 ; fmul st0,st mov al,-16
faddp st1,st0 jns STORE_1
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] shl esi,1
add al,ah mov al,-48
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: STORE_1:
; add al,[ebx+esi+0x80000] ; add al,[ebx+esi+0x80000]
add [di],al add [edi],al
inc di inc edi
inc ebp
inc bp cmp ebp,SCREEN_W/2
cmp bp,160
EYE_P: EYE_P:
jnz TUBEX
inc edx
cmp edx,SCREEN_H/2
jnz TUBEY
jnz TUBEX call display_image
inc dx
cmp dx,80
jnz TUBEY
call display_image pop esi
mov ecx,SCREEN_H*SCREEN_W
pop si
mov ch,SCREEN*320/256
align 4
BLUR: BLUR:
inc esi
inc si sar byte [esi],2
sar byte [si],2 loop BLUR
loop BLUR ret
ret
align 4
display_image: display_image:
pusha
pusha mov esi,PIXBUF
mov edi,buf2
align 4
newp:
movzx edx,byte [esi]
shl edx,4
mov esi,PIXBUF mov [edi],edx
mov edi,0x10000
newp:
movzx edx,byte [esi]
shl edx,4
; mov dh,dl
mov [edi],edx
add edi,3 add edi,3
inc esi inc esi
cmp esi,320*160+PIXBUF cmp esi,PIXBUF+SCREEN_W*SCREEN_H
jbe newp jbe newp
mov eax,7 xor edx,edx
mov ecx,320*65536+160 mcall SF_PUT_IMAGE,buf2,<SCREEN_W,SCREEN_H>
xor edx,edx
mov ebx,0x10000
mcall
popa
ret
popa
ret
align 4
draw_window: draw_window:
pusha
pusha mcall SF_REDRAW, SSF_BEGIN_DRAW
mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
mcall 12, 1 add eax,SCREEN_H
mcall 48, 4 ;get skin width lea ecx,[100*65536+4+eax]
lea ecx,[100*65536+164+eax] mcall SF_CREATE_WINDOW,100*65536+SCREEN_W+9,, 0x74000000,,title
xor eax,eax mcall SF_REDRAW, SSF_END_DRAW
mov ebx,100*65536+329 popa
mov edx,0x74000000 ret
mov edi,title
mcall
mcall 12, 2
popa
ret
title db appname,0
db 41,0,0xC3,0x3C
align 4
db 41,0,0xC3,0x3C
TEXUV: TEXUV:
rd 1
align 4
init_tube: init_tube:
mov ecx,256
mov ecx,256
PAL1: PAL1:
mov edx,3C8h
mov dx,3C8h mov eax,ecx
mov ax,cx inc edx
inc dx sar al,1
sar al,1 js PAL2
js PAL2 mul al
mul al shr ax,6
shr ax,6
PAL2: PAL2:
mov al,0
mov al,0 jns PAL3
jns PAL3 sub al,cl
sub al,cl shr al,1
shr al,1 shr al,1
shr al,1
PAL3: PAL3:
mov ebx,ecx
mov bx,cx mov [ebx+buf1],bh
mov [ebx+0x1000],bh loop PAL1
loop PAL1 mov ecx,256
mov ecx,256
TEX: TEX:
mov bx,cx
add ax,cx
rol ax,cl
mov dh,al
sar dh,5
adc dl,dh
adc dl,[ebx+255+buf1]
shr dl,1
mov [ebx+buf1],dl
not bh
mov [ebx+buf1],dl
loop TEX
mov bx,cx fninit
add ax,cx fldz
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:
ret
align 4
image_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: