Files
lba1-classic/SOURCES/FIRE.ASM
Gwen Gourevich c5f4f6ba25 Initial commit
2021-10-27 10:34:18 +02:00

178 lines
2.6 KiB
NASM

; ------------------------------ FIRE.ASM ------------------------------
.386p
.model SMALL, SYSCALL
.data
include \projet\lib386\lib_svga\svga.ash
include \projet\lib386\lib_sys\lib_sys.ash
public NoLanguage Imagen
extrn NoLanguage BufSpeak:DWORD
;Imagen DB 320*50 DUP (0)
;Imagen2 DB 320*50 DUP (0)
Imagen dd 0000
Imagen2 dd 0000
loopy dw 00
.code
public NoLanguage DoFire
public NoLanguage ComputeFire
ComputeFire proc uses esi edi ebx edx
mov eax, [BufSpeak]
mov [Imagen], eax
add eax, 320*50
mov [Imagen2], eax
mov esi, [Imagen]
add esi, 321
mov edi, [Imagen2]
add edi, 321
; mov esi, 321 + offset Imagen
; mov edi, 321 + offset Imagen2
MOV CX,48*320-2
XOR BH,BH
@@lp:
XOR AX,AX
ADD AL,-1[eSI]
ADC AH,BH
ADD AL,-320[eSI]
ADC AH,BH
ADD AL,-319[eSI]
ADC AH,BH
ADD AL,-321[eSI]
ADC AH,BH
ADD AL,1[eSI]
ADC AH,BH
ADD AL,320[eSI]
ADC AH,BH
ADD AL,319[eSI]
ADC AH,BH
ADD AL,321[eSI]
ADC AH,BH
ROR AX,3
TEST AH,65h ; Wanna know why 60h? Me too.
JNZ @@nx ; This is pure experience.
; ok but it's better with 65
mov edx, [Imagen2]
add edx, 46*320
CMP edi, edx
; cmp edi, 46*320 + offset Imagen2
JNC @@dec
OR AL,AL ; My dog coded here too.
JZ @@nx ; I helped my sister with this one.
@@dec:
DEC AL ; Yeah! Cool a bit, please.
@@nx:
inc esi
mov byte ptr[edi], al
inc edi
dec cx
jnz @@lp ; New image stored in Imagen2.
mov esi, [Imagen2]
add esi, 320
MOV edi, [Imagen]
; mov esi, 320 + offset Imagen2
; mov edi, offset Imagen
MOV ecx, 160*48/2
rep movsd
mov esi, [Imagen2]
add esi, 320*39
; mov esi, offset Imagen2 + 320*39
mov ecx, 5*320
mov ah, 11
@@rcl:
mov al,[esi]
cmp al, 15
jnc @@rcn
SUB AL,AH
NEG AL
MOV [eSI],AL
@@rcn:
INC eSI
dec cx
jnz @@rcl
ret
ComputeFire endp
DoFire proc uses esi edi ebx ebp ,\
lig:dword, coul:dword
call ComputeFire
mov esi, [Imagen]
add esi, 5*320
; mov esi, offset Imagen + 5 * 320
mov edi, Log
mov eax, lig
add edi, [TabOffLine + eax*4]
mov ebx, Coul
mov bh, bl
add bh, 15
mov dx, 25
copy0: mov cx, 320
copy: mov al, [esi]
shr al, 1
add al, bl
cmp al, bh
ja adcoul
adcrt: mov ah, al
mov [edi], ax
mov [edi+640], ax
inc esi
inc edi
inc edi
dec cx
jnz copy
add edi, 640
dec dx
jnz copy0
ret
adcoul: mov al, bh
jmp adcrt
DoFire endp
END