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

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,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 ; 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' db 'MENUET01'
dd 0x01 dd 1,START,image_end,memory_end,stacktop,0,0
dd START
dd I_END
dd 0x40000
dd 0x40000
dd 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: START:
call draw_window call draw_window
call init_tube call init_tube
push ebx push ebx
still: still:
pop ebx pop ebx
call MAIN call MAIN
push ebx push ebx
mov eax,23 mcall SF_WAIT_EVENT_TIMEOUT,1
mov ebx,1
mcall
cmp eax,1 cmp eax,EV_REDRAW
jne no_red jne no_red
call draw_window call draw_window
jmp still jmp still
no_red: no_red:
cmp eax,0 or eax,eax
je still jz still
or eax,-1 mcall SF_TERMINATE_PROCESS
mcall
SCREEN equ 160 EYE equ EYE_P-4
PIXBUF equ 200h
EYE equ EYE_P-2
align 4
MAIN: MAIN:
;edx - coord y
add bh,10;8 ;ebp - coord x
;edi - pixel buffer
add ebx,10 shl 8
mov edi,PIXBUF mov edi,PIXBUF
fadd dword [di-PIXBUF+TEXUV-4] fadd dword [TEXUV-4]
push di push edi
mov dx,-80 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 fld st3
fsincos fsincos
fld st2 fld st2
fmul st0,st1 fmul st0,st1
fld st4 fld st4
fmul st0,st3 fmul st0,st3
db 0xde,0xe9 ; fsubp st1,st0 fsubp st1,st0
db 0xd9,0xcb ; fxch st3 fxch st3
fmulp st2,st0 fmulp st2,st0
fmulp st3,st0 fmulp st3,st0
faddp st2,st0 faddp st2,st0
db 0xd9,0xca ; fxch st2 fxch st2
loop ROTATE loop ROTATE
fld st1 fld st1
db 0xdc,0xc8 ; fmul st0,st fmul st0,st0
fld st1 fld st1
db 0xdc,0xc8 ; fmul st0,st fmul st0,st0
faddp st1,st0 faddp st1,st0
fsqrt 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 add al,ah
and al,64 and al,64
mov al,-5 mov al,-5
jz STORE_1 jz STORE_1
shl si,2 shl esi,2
lea ax,[bx+si] lea eax,[ebx+esi]
sub al,ah sub al,ah
mov al,-16 mov al,-16
jns STORE_1 jns STORE_1
shl si,1 shl esi,1
mov al,-48 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 jnz TUBEX
inc dx inc edx
cmp dx,80 cmp edx,SCREEN_H/2
jnz TUBEY jnz TUBEY
call display_image call display_image
pop si pop esi
mov ch,SCREEN*320/256 mov ecx,SCREEN_H*SCREEN_W
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 esi,PIXBUF
mov edi,0x10000 mov edi,buf2
newp: align 4
newp:
movzx edx,byte [esi] movzx edx,byte [esi]
shl edx,4 shl edx,4
; mov dh,dl
mov [edi],edx 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
mov ecx,320*65536+160
xor edx,edx xor edx,edx
mov ebx,0x10000 mcall SF_PUT_IMAGE,buf2,<SCREEN_W,SCREEN_H>
mcall
popa popa
ret ret
align 4
draw_window: draw_window:
pusha pusha
mcall 12, 1 mcall SF_REDRAW, SSF_BEGIN_DRAW
mcall 48, 4 ;get skin width mcall SF_STYLE_SETTINGS, SSF_GET_SKIN_HEIGHT
lea ecx,[100*65536+164+eax] add eax,SCREEN_H
xor eax,eax lea ecx,[100*65536+4+eax]
mov ebx,100*65536+329 mcall SF_CREATE_WINDOW,100*65536+SCREEN_W+9,, 0x74000000,,title
mov edx,0x74000000 mcall SF_REDRAW, SSF_END_DRAW
mov edi,title
mcall
mcall 12, 2
popa popa
ret ret
title db appname,0 align 4
db 41,0,0xC3,0x3C
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
@@ -230,25 +209,23 @@ PAL2:
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 mov bx,cx
add ax,cx add ax,cx
rol ax,cl rol ax,cl
mov dh,al mov dh,al
sar dh,5 sar dh,5
adc dl,dh adc dl,dh
adc dl,[ebx+255+0x1000] adc dl,[ebx+255+buf1]
shr dl,1 shr dl,1
mov [ebx+0x1000],dl mov [ebx+buf1],dl
not bh not bh
mov [ebx+0x1000],dl mov [ebx+buf1],dl
loop TEX loop TEX
fninit fninit
@@ -256,9 +233,14 @@ TEX:
ret 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: