home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / K-INVIT.ZIP / XN_INV.PAS < prev   
Pascal/Delphi Source File  |  1996-05-18  |  15KB  |  583 lines

  1. {═════════════════════════════════════════════════════════════════════════════
  2.                                                     Gautier Portet  FD/KNIGHTS
  3.   "Invitation"                                      3, Place Ferdinand Buisson
  4. Copyright KNIGHTS  1996                             31240 St Jean       France
  5. Music by Benji / JFF
  6. All Code by ƒire drαgΘ∩ . KNIGHTS             FAX: (+33) 35 69 44 83 (EcLiPsE)
  7. ══════════════════════════════════════════════════════════════════════════════
  8.              │
  9.             -.▄█  ██▄ ▄█   █▄  ▄█  ▄████▄  ▄█   █▄ ▀████▄ ▄█████▄
  10.              │██ ██   ███  ██  ██  ██      ██   ██   ██   ██
  11.               ███▌    ██ █ ██  ██  ██ ▄██▄ ███████   ██    █████▄
  12.               ██ ██   ██  ███  ██  ██    █ ██   ██   ██        ██
  13.               ▀█  ██▄ ▀█   █▀  █▀  ▀█████▀ ▀█   █▀   █▀   ▄█████▀
  14.                                                        εcLiPsε ]<
  15. "INVITATION"
  16. coded by Fire Dragon 15..17/04/96
  17. [ KNIGHTS Official Source Code ]
  18.  
  19. - MIDAS Sound System, Copyright 1995 Petteri Kangaslampi and Jarno Paananen
  20. - Couleurs de tapette, Copyright Remdy / CeQuiVaAvecLaBrosseàDent 1996
  21. - 80% pur Pascal (lame!) code , Copyright FD/KNIGHTS 1996
  22.  
  23. You can do whatever you want with this source code.
  24. It is PUBLIC DOMAIN.
  25. But as I'm the creator of it, I want the credits and Greets if you use it (?!)
  26. Next time ----> PUR ASM CODE !!    ( And maybe Textmode too !! :)
  27. }
  28.  
  29.  
  30. {$DEFINE MIDAS}
  31.  
  32.  
  33.  
  34. {$M 4096,0,640000}
  35.  
  36. {$IFDEF MIDAS}
  37. uses midas, mfile, mplayer, modp, errors, mconfig;
  38. {$ENDIF}
  39.  
  40.  
  41. var n , m,i,j : integer;
  42. cursor_shape : word;
  43. k : char;
  44.  
  45. procedure WAITVBL; assembler;
  46. asm
  47.     mov    dx,3DAh
  48. @t1:
  49.     in    al,dx
  50.     test    al,8
  51.     jz    @t1
  52.     cli
  53. @t2:
  54.     in    al,dx
  55.     test    al,8
  56.     jnz    @t2
  57.     sti
  58. end;
  59.  
  60. procedure DPrint(Ligne,colonne, Couleur : byte; St : string);
  61. { BIBLE PC : ecrit un caractère dans la mémoire vidéo }
  62. {aie, il faut que je le fasse en asm en vitesse ... }
  63. var PAGE_OFS : word absolute $0040:$004E;
  64.     Offset   : word;
  65.     i, j     : byte;
  66.     Attribut : word;
  67. begin
  68.   Offset := Ligne * 160 + Colonne shl 1 + 0;
  69.   Attribut := Couleur shl 8;
  70.   i := length( St );
  71.   for j:=1 to i do
  72.     begin
  73.       memw[$b800:Offset] := Attribut or ord( St[j] );
  74.       Offset := Offset + 2;
  75.     end;
  76. end;
  77.  
  78.  
  79. procedure SetRGB(color : integer; r,g,b : byte); assembler;
  80. asm
  81.     cli
  82.     mov    dx,$3C8
  83.     mov    ax,color
  84.     out    dx,al
  85.     inc    dx
  86.     mov    al,r
  87.     out    dx,al
  88.     mov    al,g
  89.     out    dx,al
  90.     mov    al,b
  91.     out    dx,al
  92.     sti
  93. end;
  94.  
  95. procedure set_adress(n: word);
  96. {TEXT MODE : SET LSA + VertPAN }
  97. var l,m : word;
  98. begin
  99.        l := (n shr 4 ) * 80 ;          { on met en word-LSA et byte-PANNING }
  100.        m := n mod 16 ;
  101. asm
  102. {wait_in_display}
  103.   mov dx,3dah
  104.   @wait1:
  105.   in al,dx
  106.   test al,8h
  107.   jnz @wait1
  108. {setstart / addresse de depart de la mem. video }
  109.   mov dx,3d4h
  110.   mov al,0ch
  111.   mov ah,byte ptr l + 1
  112.   out dx,ax
  113.   mov al,0dh
  114.   mov ah,byte ptr l
  115.   out dx,ax
  116. {wait_in_retrace}
  117.   mov dx,3dah
  118. @wait2:
  119.   in al,dx
  120.   test al,8h
  121.   jz @wait2
  122. {set_Vertical_panning / registre de smooth scrolling }
  123.   mov dx,3d4h
  124.   mov al,8h
  125.   mov ah,byte ptr m
  126.   out dx,ax
  127. End;
  128. end;
  129.  
  130. const  max_text = 10;
  131. texte : array[1..max_text,1..5] of string[40]=
  132. (
  133. (
  134. 'Bienvenue à tous, ',
  135. 'Cette intro est destinée à ',
  136. 'vous informer d'' un ',
  137. 'Projet qui nous tient à coeur',
  138. chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+
  139. chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)+chr(3)
  140. ),
  141. (
  142. '',
  143. 'Nous voudrions pouvoir',
  144. 'sortir un Music-Disk ',
  145. 'TOUS les mois. ',
  146. '                                        '
  147. ),
  148. (
  149. 'Mais notre groupe n''a pas encore',
  150. 'assez de membres. ',
  151. 'donc, nous faisons appel à ',
  152. 'VOUS',
  153. '                               '
  154. ),
  155. (
  156. 'Si vous êtes Musicien,       ',
  157. 'Codeur ou Graphiste',
  158. 'Déjà dans un groupe ou non,',
  159. 'Contactez-nous .....',
  160. '                               '
  161. ),
  162. (
  163. '',
  164. '',
  165. '',
  166. '',
  167. ''
  168. ),
  169. (
  170. '',
  171. 'Pour plus d''informations,',
  172. 'Demarrez KNIGHTS.EXE',
  173. '',
  174. '                        '
  175. ),
  176. (
  177. 'INTRO faite en vitesse par :',
  178. '      CODE  : Fire Dragon',
  179. '      MUSIC : Benji / JFF',
  180. '      ASCII : Eclipse & FD',
  181. '(couleurs de tapette : REMDY :)   '
  182. ),
  183. (
  184. 'Greets :                 ',
  185. 'The SkyRangers Team, ',
  186. 'MC Bidule, Axel & Benji [JFF], ',
  187. 'Makiabelik, and all the PC ZIK-men',
  188. 'See you soon  ?                  '
  189. ),
  190. (
  191. 'Wisdom,JFF,Dentifrice,Pussy Cat',
  192. 'Typhoon, Olympus, NTSC, ',
  193. '',
  194. '',
  195. '                       '
  196. ),
  197. (
  198. '                     ',
  199. '',
  200. '... RESTARTING ...',
  201. '    Press  ESC',
  202. '                       '
  203. )
  204. );
  205.  
  206.  
  207. var
  208. car,line,page : byte;
  209.  
  210. scr_index : byte;
  211.  
  212. temp : string[40];
  213.  scroll : string;
  214.  
  215.  x : array[1..20] of byte;
  216.  y : array[1..20] of byte;
  217.  xo: array[1..20] of byte;
  218.  yo: array[1..20] of byte;
  219.  xi : array[1..20] of shortint;
  220.  yi : array[1..20] of shortint;
  221.  
  222.  
  223.  
  224. procedure do_scroll;
  225. var n : byte;
  226. begin
  227. inc(scr_index);
  228. if scr_index > ord(scroll[0]) then scr_index := 1;
  229. for n := 1 to 39 do
  230. temp[n]:= temp[n+1];
  231. temp[40] := scroll[scr_index];
  232. dprint(124,20,16+7,temp);
  233.  
  234. for n := 1 to 20 do
  235. begin
  236. inc(x[n],xi[n]);
  237. inc(y[n],yi[n]);
  238. if x[n] < 1 then begin
  239.                  x[n] := 1;
  240.                  xi[n] := -xi[n];
  241.                  end;
  242. if x[n] > 30 then begin
  243.                  x[n] := 30;
  244.                  xi[n] := -xi[n];
  245.                  end;
  246. if y[n] < 1 then begin
  247.                  y[n] := 1;
  248.                  yi[n] := -yi[n];
  249.                  end;
  250. if y[n] > 10 then begin
  251.                  y[n] := 10;
  252.                  yi[n] := -yi[n];
  253.                  end;
  254. dprint(110+yo[n],xo[n]+45,0,chr(0));
  255. dprint(110+y[n],x[n]+45,1,chr(14));
  256. xo[n] := x[n];
  257. yo[n] := y[n];
  258.  
  259. end;
  260.  
  261. end;
  262.  
  263.  
  264. procedure do_text;
  265. begin
  266. dprint(108+2*line,car+10,7,texte[page,line,car]);
  267. inc(car);
  268. if car > length(texte[page,line]) then
  269. begin
  270. car := 1;
  271. inc(line);
  272. if line = 6 then begin
  273. line := 1;
  274. inc(page);
  275. dprint(110,car+10,7,'                                        ');
  276. dprint(112,car+10,7,'                                        ');
  277. dprint(114,car+10,7,'                                        ');
  278. dprint(116,car+10,7,'                                        ');
  279. dprint(118,car+10,7,'                                        ');
  280.  
  281. if page > max_text then page := 1;
  282. end;
  283. end;
  284. end;
  285.  
  286.  
  287. procedure main;
  288. var n,m : integer;
  289. adr : word;
  290. begin
  291. for n := 1 to 20 do
  292. begin
  293. x[n] := random(30);
  294. y[n] := random(10);
  295. xi[n] := random(1)+1;
  296. yi[n] := random(1)+1;
  297. end;
  298.  
  299. setrgb(1,60,26,48);
  300.  
  301. scroll := ' K N I G H T S /     Invitation    --->    Coded by Fire Dragon , Ansi by Eclipse & FD       '
  302. +' Music by Benji / JFF    Couleurs de tapette : Remdy                             ';
  303. temp := '                                               ';
  304. line := 1;
  305. page := 1;
  306. car := 1;
  307. setrgb(7,30,30,30);
  308.  
  309. for n := 0 to 63 do
  310. begin
  311. setrgb(0,n,(n*2) div 3 ,n);
  312. waitvbl;
  313. end;
  314.  
  315. adr := 16*113;
  316.  
  317.  
  318. dprint(101,0,7,'             │');
  319. dprint(102,0,7,'            -.▄█  ██▄ ▄█   █▄  ▄█  ▄████▄  ▄█   █▄ ▀████▄ ▄█████▄');
  320. dprint(103,0,7,'             │██ ██   ███  ██  ██  ██      ██   ██   ██   ██');
  321. dprint(104,0,7,'              ███▌    ██ █ ██  ██  ██ ▄██▄ ███████   ██    █████▄');
  322. dprint(105,0,7,'              ██ ██   ██  ███  ██  ██    █ ██   ██   ██        ██');
  323. dprint(106,0,7,'              ▀█  ██▄ ▀█   █▀  █▀  ▀█████▀ ▀█   █▀   █▀   ▄█████▀');
  324. dprint(107,0,7,'                                                       εcLiPsε ]< ');
  325. for n := 00 to 63 do
  326. begin
  327. dec(adr,3);
  328. set_adress(adr);
  329. setrgb(7,n,n,n);
  330. end;
  331.  
  332. waitvbl;
  333. for n := 0 to 79 do
  334. dprint(124,n,16+7,chr(3));
  335.  
  336. { BOUCLE pricipale }
  337. repeat
  338. waitvbl;
  339. do_scroll;
  340. waitvbl;
  341. do_scroll;
  342. waitvbl;
  343. do_scroll;
  344. do_text;
  345. until port[$60] = 1;  { Wait for ESC}
  346.  
  347.  
  348. n := 0;
  349. repeat
  350. inc(n);
  351. dec(adr,n);
  352. set_adress(adr);
  353. do_scroll;
  354. until adr  < 80*16 ;
  355.  
  356.  
  357.  
  358.  
  359. end;
  360.  
  361.  
  362. procedure XN;
  363. const XN_text : array[1..7]of string[80]=
  364. ('             │                                                    ',
  365. '            -.▄█  ██▄ ▄█   █▄  ▄█  ▄████▄  ▄█   █▄ ▀████▄ ▄█████▄',
  366. '             │██ ██   ███  ██  ██  ██      ██   ██   ██   ██',
  367. '              ███▌    ██ █ ██  ██  ██ ▄██▄ ███████   ██    █████▄',
  368. '              ██ ██   ██  ███  ██  ██    █ ██   ██   ██        ██',
  369. '              ▀█  ██▄ ▀█   █▀  █▀  ▀█████▀ ▀█   █▀   █▀   ▄█████▀',
  370. '                                                                 ');
  371. { decidement, je l'aime bien ce logo !!!!!}
  372.  
  373. var n , m : integer;
  374. begin
  375. setrgb(7,63,63,63);
  376. waitvbl;
  377. set_adress(51*16+8);
  378.  
  379. for m := 10 to 65 do
  380. for n := 10 downto 0 do
  381. begin
  382. waitvbl;
  383. { Pascal UNROLL  :) }
  384. dprint(60+n,m,7,xn_text[1,m]);
  385. dprint(61+n,m,7,xn_text[2,m]);
  386. dprint(62+n,m,7,xn_text[3,m]);
  387. dprint(63+n,m,7,xn_text[4,m]);
  388. dprint(64+n,m,7,xn_text[5,m]);
  389. dprint(65+n,m,7,xn_text[6,m]);
  390. dprint(66+n,m,7,xn_text[7,m]);
  391.  
  392. end;
  393. for n := 63 downto 0 do
  394. begin
  395. waitvbl;
  396. setrgb(7,63,n,63);
  397. setrgb(0,n,(n*2) div 3 ,n);
  398. end;
  399.  
  400. for n := 60 downto 00 do
  401. begin
  402. waitvbl;
  403. setrgb(7,n,0,n);
  404. end;
  405.  
  406. waitvbl;
  407. end;
  408.  
  409.  
  410.  
  411. procedure intro;
  412. begin
  413. set_adress(50*16);
  414. setrgb(7,0,0,0);
  415. waitvbl;
  416.  
  417.  
  418. m := 25;
  419. dprint(60+n,m,7,'▀ █ █ █ █ ▀ ██  █  ██ ▀ ███ █ █');
  420. dprint(61+n,m,7,'█ █▌█ █ █ █ ▐▌ █ █ ▐▌ █ █ █ █▌█');
  421. dprint(62+n,m,7,'█ █▐█ █ █ █ ▐▌ ███ ▐▌ █ █ █ █▐█');
  422. dprint(63+n,m,7,'█ █ █  █  █ ▐▌ █ █ ▐▌ █ ███ █ █');
  423.  
  424. for n := 0 to 63 do
  425. begin
  426. waitvbl;
  427. setrgb(7,n,n,n);
  428. end;
  429.  
  430. for n := 63 downto 0 do
  431. begin
  432. waitvbl;
  433. setrgb(7,n,n,n);
  434. end;
  435.  
  436. m := 25;
  437. dprint(60+n,m,7,'                               ');
  438. dprint(61+n,m,7,'                               ');
  439. dprint(62+n,m,7,'                               ');
  440. dprint(63+n,m,7,'                               ');
  441. end;
  442.  
  443.  
  444.  
  445. {$IFDEF MIDAS}
  446. function toASCIIZ(dest : PChar; str : string) : PChar;
  447. {MIDAS}
  448. var
  449.     spos, slen : integer;
  450.     i : integer;
  451.  
  452. begin
  453.     spos := 0;                          { string position = 0 }
  454.     slen := ord(str[0]);                { string length }
  455.  
  456.     { copy string to ASCIIZ conversion buffer: }
  457.     while spos < slen do
  458.     begin
  459.         dest[spos] := str[spos+1];
  460.         spos := spos + 1;
  461.     end;
  462.  
  463.     dest[spos] := chr(0);               { put terminating 0 to end of string }
  464.  
  465.     toASCIIZ := dest;
  466. end;
  467.  
  468. var
  469.     module : PmpModule;
  470.      error, isConfig : integer;
  471.     str : array [0..256] of char;
  472.     configured : byte;
  473. {$ENDIF}
  474.  
  475.  
  476.  
  477. begin
  478. {$IFDEF MIDAS}
  479.     midasSetDefaults;                   { set MIDAS defaults }
  480.     if error <> OK then
  481.         midasError(error);
  482.  
  483.     configured := midasConfig;
  484.     if error <> OK then
  485.         midasError(error);
  486.     if configured = 1 then
  487.     begin
  488.         WriteLn('Configuration OK');
  489.     end
  490.     else
  491.     begin
  492.         { Configuration unsuccessful: }
  493.         WriteLn('NOT CORRECT configuration');
  494.     end;
  495.  
  496.     midasInit;                          { initialize MIDAS Sound System }
  497.     if error <> OK then
  498.         midasError(error);
  499.      toASCIIZ(str, 'tripto7.mod');
  500.     module := midasLoadModule(str, @mpMOD, NIL);
  501.     midasPlayModule(module, 0);
  502. {$ENDIF}
  503.  
  504.  
  505. asm
  506. mov ax,0003h
  507. int 10h
  508. end;
  509.         intro;
  510.         main;
  511.         xn;
  512.  
  513. asm
  514. mov ax,0003h
  515. int 10h
  516. end;
  517. setrgb(7,0,0,0);
  518.  
  519. write('════════════════════════════════════════════════════════════════════════════════');
  520. write('                                                      Gautier Portet  FD/KNIGHTS');
  521. write('  "Invitation"                                        3, Place Ferdinand Buisson');
  522. write('Copyright KNIGHTS  1996                               31240 St Jean       France');
  523. write('Music by Benji / JFF                                                            ');
  524. write('All Code by ƒire drαgΘ∩ . KNIGHTS               FAX: (+33) 35 69 44 83 (EcLiPsE)');
  525. write('════════════════════════════════════════════════════════════════════════════════');
  526. writeln('             │');
  527. writeln('            -.▄█  ██▄ ▄█   █▄  ▄█  ▄████▄  ▄█   █▄ ▀████▄ ▄█████▄');
  528. writeln('             │██ ██   ███  ██  ██  ██      ██   ██   ██   ██');
  529. writeln('              ███▌    ██ █ ██  ██  ██ ▄██▄ ███████   ██    █████▄');
  530. writeln('              ██ ██   ██  ███  ██  ██    █ ██   ██   ██        ██');
  531. writeln('              ▀█  ██▄ ▀█   █▀  █▀  ▀█████▀ ▀█   █▀   █▀   ▄█████▀');
  532. writeln('                                                       εcLiPsε ]< ');
  533. writeln('');
  534. writeln('     GREETS : ( If you are not here, you are not cool (or I forgot you) :)');
  535. writeln('    ->                                                                   <-');
  536. writeln('    -> Atlantis,Bitline,Sherlock[WiSdom] MK[Pussy Cat] Remdy[Dentifrice] <-   ');
  537. writeln('    ->     Senser[Typhoon] Axel,Benji,Exocet,Judge Miguel,Kezax[JFF]     <-   ');
  538. writeln('    -> Pollux[Olympus]   The SkyRangers Team  All the members of KNIGHTS <-   ');
  539. writeln('    ->                           MIDAS forever !!                        <-');
  540. writeln('    ->       Qui a dit que l''on ne peut rien faire en mode texte ?      <-');
  541.  
  542.  
  543. for n := 0 to 40 do
  544. begin
  545. waitvbl;
  546. setrgb(7,n,n,n);
  547. end;
  548.  
  549. {$IFDEF MIDAS}
  550.     midasStopModule(module);            { stop playing }
  551.     midasFreeModule(module);            { deallocate module }
  552.     midasClose;                         { uninitialize MIDAS }
  553. {$ENDIF}
  554. end.
  555.  
  556. {═══════════════════════════════════════════════════════════════════════════════
  557.                                                       Gautier Portet  FD/KNIGHTS
  558.   "Invitation"                                        3, Place Ferdinand Buisson
  559. Copyright KNIGHTS  1996                               31240 St Jean       France
  560. Music by Benji / JFF
  561. All Code by ƒire drαgΘ∩ . KNIGHTS               FAX: (+33) 35 69 44 83 (EcLiPsE)
  562. ════════════════════════════════════════════════════════════════════════════════
  563.              │
  564.             -.▄█  ██▄ ▄█   █▄  ▄█  ▄████▄  ▄█   █▄ ▀████▄ ▄█████▄
  565.              │██ ██   ███  ██  ██  ██      ██   ██   ██   ██
  566.               ███▌    ██ █ ██  ██  ██ ▄██▄ ███████   ██    █████▄
  567.               ██ ██   ██  ███  ██  ██    █ ██   ██   ██        ██
  568.               ▀█  ██▄ ▀█   █▀  █▀  ▀█████▀ ▀█   █▀   █▀   ▄█████▀
  569.                                                        εcLiPsε ]<
  570. "INVITATION"
  571. coded by Fire Dragon 15..17/04/96
  572. [ KNIGHTS Official Source Code ]
  573.  
  574. - MIDAS Sound System, Copyright 1995 Petteri Kangaslampi and Jarno Paananen
  575. - Couleurs de tapette, Copyright Remdy / CeQuiVaAvecLaBrosseàDent 1996
  576. - 80% pur Pascal (lame!) code , Copyright FD/KNIGHTS 1996
  577.  
  578. You can do whatever you want with this source code.
  579. It is PUBLIC DOMAIN.
  580. But as I'm the creator of it, I want the credits and Greets if you use it (?!)
  581. }
  582.  
  583.