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,206 @@
|
|||||||
|
; 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'
|
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
|
db 0xdc,0xc8 ;fmul st0,st ?
|
||||||
fld st1
|
fld st1
|
||||||
db 0xdc,0xc8 ; fmul st0,st
|
db 0xdc,0xc8 ;fmul st0,st ?
|
||||||
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 +208,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 +232,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:
|
||||||
|
Reference in New Issue
Block a user