home *** CD-ROM | disk | FTP | other *** search
- /*
- NAME: FIRE.C--
- INFO: Written by Midnight.
- Conversion to C-- (and a little palette messing) by SPHINX.
- DESCRIPTION: This program displays a fire like simulation on a
- VGA 320x200 256 colour screen.
- RUN FILE SIZE: 457 bytes.
- */
-
- ?use80386
- ?resize FALSE
- ?assumeDSSS TRUE
-
- ?include "VIDEO.H--"
- ?include "VGA.H--"
- ?include "RANDOM.H--"
- ?include "KEYCODES.H--"
-
- byte palette[768];
-
- // byte pic = FROM "c--.cut";
-
- word F;
- word LowLimit;
-
-
- void SetCols ()
- byte N;
- {
-
- /*
- BX = 0;
- do {
- SI = BX+BX+BX;
- palette[SI] = BL >> 2;
- palette[SI+1] = BL >> 3;
- palette[SI+2] = 0;
- BX++;
- } while( BX < 256 );
- */
-
-
- palette[0]=0;
- palette[1]=0;
- palette[2]=0;
- BX = 0;
- do {
- DI = BX+BX+BX;
-
- AX = BX * 64 / 85;
- DL = AL;
- palette[DI+3] = DL;
- palette[DI+3+1] = 0;
- palette[DI+3+2] = 0;
-
- palette[DI+3+85+85+85] = 63;
- palette[DI+3+85+85+85+1] = DL;
- palette[DI+3+85+85+85+2] = 0;
-
- palette[DI+3+85+85+85+85+85+85] = 63;
- palette[DI+3+85+85+85+85+85+85+1] = 63;
- palette[DI+3+85+85+85+85+85+85+2] = DL;
-
- BX++;
- } while( BX < 85 );
-
-
- SETVGAPALETTE( ,0,256,#palette);
- }
-
-
-
- void AddFire (word N)
- {
- loop(N)
- {
- AX = RAND()%10+1;
- SI = AX+AX;
- AX = RAND()%298 + 64010;
- DI = AX;
- AL = RAND()&127 + 128;
- loop(SI)
- {
- ESBYTE[DI] = AL;
- ESBYTE[DI+640] = AL;
- DI++;
- }
- }
- }
-
-
- void CopyAvg ()
- {
- DI = 1280;
- do {
- BX = 2;
- do {
- AX = ESBYTE[DI+BX-2] + ESBYTE[DI+BX+2] + ESBYTE[DI+BX] +
- ESBYTE[DI+BX+640] / 4;
- AX = AX + ESBYTE[DI+BX-640] >> 1;
- IF( AL > 128 )
- AL-=2;
- ELSE IF( AL > 3)
- AL -=4;
- ELSE
- AL = 0;
-
- AH = AL;
- ESWORD[DI+BX-1280] = AX;
- ESWORD[DI+BX-1280+320] = AX;
- BX += 2;
- } while( BX < 318 );
- DI += 640;
- } while( DI < 320*204 );
- }
-
-
-
- void main ()
- {
- @ SETVIDEOMODE(byte vid_320x200_256);
-
- SetCols();
-
- ES = 0xA000;
-
- F = 0;
- do {
- AddFire(F / 32 + 1);
- CopyAvg();
- IF( F < 512 )
- F++;
- LowLimit = F >> 2 + 128 >> 2;
- // IF( F % 80 == 0 )
- // overimage19(80,90,#pic,0);
- } while( BIOSKEYCHECK() == 0 );
-
- do {BIOSREADKEY();
- } while( BIOSKEYCHECK() != 0 );
-
- @ SETVIDEOMODE(byte vid_text80c);
- }
-
-
- /* end of FIRE.C-- */