#include #include #define PERSPECTIVE 256 /* n„iden tarkoitukset */ #define ORIGOX 160 /* varmaan muistatkin */ #define ORIGOY 100 /* jo nyt? */ #define NUMBEROFSTARS 2000 /* t„m„ s„„t„„ t„htien m„„r„n */ #define SPEEDOFSTARS 1 /* t„htien nopeus, yleens„ 1 */ #define putpixel(x,y,c) _farpokeb(_dos_ds, 0xA0000+(y*320+x), c) #define waitsync() while ( (inportb(0x03DA) & 0x08))\ while (!(inportb(0x03DA) & 0x08)) struct { int x,y,z; }starinfo[NUMBEROFSTARS]; void randomize_star(int value) { starinfo[value].x = rand() % 320 - 160; starinfo[value].y = rand() % 200 - 100; starinfo[value].z = rand() % 256 + 1; } void main(void) { int x,y,i; /* koordinaattimuuttujat sek„ apumuuttuja */ textmode(0x13); /* siirrymme tilaan 13h */ srand(time(0)); /* alustamme randomgeneraattorimme */ for(i=0;i 0 && x < 320 && y > 0 && y < 200) putpixel(x,y,0); starinfo[i].z--; if(0 >= starinfo[i].z) { randomize_star(i); starinfo[i].z=256; } x = starinfo[i].x * PERSPECTIVE / starinfo[i].z + ORIGOX; y = starinfo[i].y * PERSPECTIVE / starinfo[i].z + ORIGOY; if(x > 0 && x < 320 && y > 0 && y < 200) putpixel(x,y,15); } waitsync(); /* n„iden pit„isi v„h„n hidastaa */ waitsync(); /* py”rimisnopeutta Pentiumeilla */ } textmode(0x3); /* paluu tekstimoodiin */ }