{
>Well... Does anyone know how to make flames? is it a fractal
>or something? does anyone can explain it (Formula ETC.) ???

Actually, it's pretty simple.  Look at this diagram...

{ ...      . - A Pixel                     }
{ .X.      X - Pixel we're on              }
{ 123      1, 2, 3 - Pixels to be averaged }

{  - fill the bottom row with random numbers             }
{    - for each row:                                     }
{      - for each pixel:                                 }
{        - average the three pixels below it and itself  }
{        - decrease by one (if not already zero)         }
{
If that wasn't very clear, here's some source (sorry there's asm).
}

{\$A+,B-,D+,E+,F-,G+,I+,L-,N-,O-,P-,Q-,R-,S-,T-,V+,X+,Y+}
{\$M 16384,0,655360}
Program Fire;
Uses Crt;

Const
VGASeg = \$A000;

Type
VGAMem  = Array[0..63999] Of Byte;

Var
VideoMem : VGAMem Absolute VGASeg:0;
OldMode,
Color    : Byte;
I        : Word;

Procedure InitMode13h; Assembler;
Asm
Mov AH, 0Fh       { Get Current Video Mode    }
Int 10h
Mov [OldMode], AL { Save it                   }
Mov AX, 13H       { Init 320x200x256 Graphics }
Int 10H
End;

Procedure CloseMode13h; Assembler;
Asm
Xor AH, AH
Mov AL, [OldMode] { Init Old Video Mode }
Int 10H
End;

Procedure PutPixel(X, Y : Word; Color : Byte); Assembler;
Asm
Mov AX, VGASeg
Mov ES, AX
Mov BX, Y
Mov DI, X
Mov AH, BL
ShR AX, 2
Mov AL, Color
Mov ES:[DI], AL
End;

Procedure MakePalette;
Begin
Port[\$3C6] := \$FF;
Port[\$3C8] := 0;
For I := 0 To 255 Do
Begin
Port[\$3C9] := I ShR 2;
Port[\$3C9] := I ShR 4;
Port[\$3C9] := 0;
End;
End;

Procedure UpDateFire;
Begin
For I := 0 To 319 Do
If Random(2) = 1 Then
Putpixel(I, 199, 0) Else
Putpixel(I, I, 0);
Asm
Mov DI, 0A000h     { ES := Pixel Location (Segment) }
Mov ES, DI
Mov DI, 63999-320  { DI := Current Pixel location (Offset) }
Mov CX, 32000      { Number of pixels to put (Counter)     }
Xor DH, DH
@PixLoop:
Mov AL, ES:[DI]     { AX := Average of colors       }
Mov DL, ES:[DI+319] { DL := Temp Reg to hold colors }
Mov DL, ES:[DI+320]
Mov DL, ES:[DI+321]
ShR AX, 2
JZ @Skip
Dec AL
@Skip:
Mov ES:[DI], AL
Dec DI
Dec CX
JNZ @PixLoop
End;
End;

Begin
Randomize;
InitMode13h;
MakePalette;
Repeat
UpDateFire;
Until KeyPressed;