Initial commit
This commit is contained in:
177
SOURCES/FIRE.ASM
Normal file
177
SOURCES/FIRE.ASM
Normal file
@@ -0,0 +1,177 @@
|
||||
; ------------------------------ 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
|
||||
Reference in New Issue
Block a user