// source: SPHINX C-- // Jesli ktos chce miec ten jezyk (szybki i krotki kod, szybko // przyswajalny) - niech pisze: solo@alpha.bet.pl // zrodlo w sumie troche chamskie, ale coz, ja na pc = amateur :-). // nie ma tez jakiejs zajebistej optymalizacji. // A najdziwniejsze jest to, ze na celeronie300 chodzi TAK SAMO // jak na p133 (w miare plynnie) // solo/ng^atd ?include "d:\\sphinx\\file.h--" ?include "d:\\sphinx\\video.h--" ?include "d:\\sphinx\\vga.h--" ?include "d:\\sphinx\\write.h--" ?include "d:\\sphinx\\keycodes.h--" ?include "d:\\sphinx\\dos.h--" byte sin [450]; byte paleta[768]; byte POZX[1560]; byte POZY[1560]; word filehandle; byte kl; // numer klatki w prekalkowanym obiekcie byte z; byte przes; word tab1; int x,y; int suma; ?define _przes 5 ?define _addy 2 ?define _ile 60 main () { set(); do { obiekt(); dom3d(); spal(); } while (@KBHIT() == 0); } void obiekt() // jakies pixle :) word N,A; { N=_ile; y=10; A=tab1; do { DI=A; x=sin[DI]+1; putpixel19(x+1,y+1,255); putpixel19(x,y+1,200); putpixel19(x+2,y+1,200); putpixel19(x+1,y+2,200); putpixel19(x+1,y,200); A=A+przes; y=y+_addy; N--; } while (N>0); tab1++; if (tab1>360) {tab1=tab1-360;} } void spal() word p1,p2,p3,p4,a; { x=0;y=0;suma=0; ES=0xA000; do { a=320*y+x; BX=a+1;p1=ESBYTE[BX]; //1 BX=a+320;p2=ESBYTE[BX]; //320 BX=a+322;p3=ESBYTE[BX]; //642 suma=p1+p2+p3; suma=suma/3; BX=a+321; ESBYTE[BX]=suma; x++; if (x>257) {x=0;y++;} } while (y<185); } void dom3d() word a; { a=kl*13; DI=a; line19(POZX[DI],POZY[DI],POZX[DI+1],POZY[DI+1],255); DI=a; line19(POZX[DI+1],POZY[DI+1],POZX[DI+2],POZY[DI+2],255); DI=a; line19(POZX[DI+2],POZY[DI+2],POZX[DI+3],POZY[DI+3],255); DI=a; line19(POZX[DI+3],POZY[DI+3],POZX[DI],POZY[DI],255); DI=a; line19(POZX[DI+4],POZY[DI+4],POZX[DI+5],POZY[DI+5],255); DI=a; line19(POZX[DI+5],POZY[DI+5],POZX[DI+6],POZY[DI+6],255); DI=a; line19(POZX[DI+6],POZY[DI+6],POZX[DI+7],POZY[DI+7],255); DI=a; line19(POZX[DI+7],POZY[DI+7],POZX[DI+4],POZY[DI+4],255); DI=a; line19(POZX[DI+4],POZY[DI+4],POZX[DI],POZY[DI],255); DI=a; line19(POZX[DI+5],POZY[DI+5],POZX[DI+1],POZY[DI+1],255); DI=a; line19(POZX[DI+2],POZY[DI+2],POZX[DI+6],POZY[DI+6],255); DI=a; line19(POZX[DI+3],POZY[DI+3],POZX[DI+7],POZY[DI+7],255); DI=a; line19(POZX[DI+7],POZY[DI+7],POZX[DI+8],POZY[DI+8],255); DI=a; line19(POZX[DI+8],POZY[DI+8],POZX[DI+6],POZY[DI+6],255); DI=a; line19(POZX[DI+5],POZY[DI+5],POZX[DI+8],POZY[DI+8],255); DI=a; line19(POZX[DI+8],POZY[DI+8],POZX[DI+6],POZY[DI+6],255); DI=a; line19(POZX[DI+11],POZY[DI+11],POZX[DI+9],POZY[DI+9],255); DI=a; line19(POZX[DI+9],POZY[DI+9],POZX[DI+10],POZY[DI+10],255); DI=a; line19(POZX[DI+10],POZY[DI+10],POZX[DI+12],POZY[DI+12],255); DI=a; kl++; if (kl>119) {kl=0;} } // PODPROCKI void set() { kl=0; przes=_przes; tab1=0; SETVIDEOMODE(3); load_sin(); load_pal(); load_pozx(); load_pozy(); SETVIDEOMODE(19); SETVGAPALETTE(,0,256,#paleta); } void load_sin () { filehandle = open("d:\\_solo\\SIN.DAT",F_READ); IF(filehandle == 0) {WRITESTR("Loading sux - SIN.TAB!\n"); } ELSE{WRITESTR("SIN loaded. \n");} read(filehandle,#sin,450); } void load_pal () { filehandle = open("d:\\_solo\\MONO.PAL",F_READ); IF(filehandle == 0) {WRITESTR("Loading sux - MONO.PAL!\n"); } ELSE{WRITESTR("MONO.PAL loaded. \n");} read(filehandle,#paleta,768); } void load_pozx () { filehandle = open("d:\\_solo\\DOM_X.DAT",F_READ); IF(filehandle == 0) {WRITESTR("Loading sux - DOM_X.DAT!\n"); } ELSE{WRITESTR("POZX.DAT loaded. \n");} read(filehandle,#POZX,1560); } void load_pozy () { filehandle = open("d:\\_solo\\DOM_Y.DAT",F_READ); IF(filehandle == 0) {WRITESTR("Loading sux - DOM_Y.DAT!\n"); } ELSE{WRITESTR("POZY.DAT loaded. \n");} read(filehandle,#POZY,1560); }