home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR41 / GAMLIB21.ZIP / EMSDEMO.C < prev    next >
C/C++ Source or Header  |  1992-03-20  |  4KB  |  124 lines

  1. #include <conio.h>
  2. #include <graph.h>
  3. #include <games.h>
  4.  
  5. int emsframe,count=0,screen=40960,screen2,back1,back2,buf1,buf2;
  6. main()
  7. {
  8.         int handle;
  9.     buf1=_amem(2000);
  10.     buf2=_amem(400);
  11.     screen2=_amem(2000);   /* Allocate memory for buffers
  12.     back1=_amem(2000);
  13.     back2=_amem(2000);
  14.  
  15.         handle=_eallocmem(32);   /* Allocate 32 ems pages and get their handle
  16.     emsframe=_epageframe();   /* Get address of page frame
  17.         _setvideomode(_MRES256COLOR);
  18.  
  19.     /* Load frames for animation and store them in expanded memory */
  20.     LoadPCX("ems1.pcx",screen);
  21.     _emapmem (0,0,handle);   /* Move ems page 0 to physical page 0 and store first frame.
  22.     _getv(0,0,150,83,emsframe,screen,320);
  23.     _emapmem(0,1,handle);   /* Move ems page 1 to physical page 0 and store frame 2.
  24.     _getv(151,0,150,83,emsframe,screen,320);
  25.     _emapmem(0,2,handle);
  26.     _getv(0,84,150,83,emsframe,screen,320);
  27.     _emapmem(0,3,handle);
  28.     _getv(151,84,150,83,emsframe,screen,320);
  29.     LoadPCX("ems2.pcx",screen);
  30.     _emapmem(0,4,handle);
  31.     _getv(0,0,150,83,emsframe,screen,320);
  32.     _emapmem(0,5,handle);
  33.     _getv(151,0,150,83,emsframe,screen,320);
  34.     _emapmem(0,6,handle);
  35.     _getv(0,84,150,83,emsframe,screen,320);
  36.     _emapmem(0,7,handle);
  37.     _getv(151,84,150,83,emsframe,screen,320);
  38.     LoadPCX("ems3.pcx",screen);
  39.     _emapmem(0,8,handle);
  40.     _getv(0,0,150,83,emsframe,screen,320);
  41.     _emapmem(0,9,handle);
  42.     _getv(151,0,150,83,emsframe,screen,320);
  43.     _emapmem(0,10,handle);
  44.     _getv(0,84,150,83,emsframe,screen,320);
  45.     _emapmem(0,11,handle);
  46.     _getv(151,84,150,83,emsframe,screen,320);
  47.     LoadPCX("ems4.pcx",screen);
  48.     _emapmem(0,12,handle);
  49.     _getv(0,0,150,83,emsframe,screen,320);
  50.     _emapmem(0,13,handle);
  51.     _getv(151,0,150,83,emsframe,screen,320);
  52.     _emapmem(0,14,handle);
  53.     _getv(0,84,150,83,emsframe,screen,320);
  54.     _emapmem(0,15,handle);
  55.     _getv(151,84,150,83,emsframe,screen,320);
  56.     LoadPCX("ems5.pcx",screen);
  57.     _emapmem(0,16,handle);
  58.     _getv(0,0,150,83,emsframe,screen,320);
  59.     _emapmem(0,17,handle);
  60.     _getv(151,0,150,83,emsframe,screen,320);
  61.     _emapmem(0,18,handle);
  62.     _getv(0,84,150,83,emsframe,screen,320);
  63.     _emapmem(0,19,handle);
  64.     _getv(151,84,150,83,emsframe,screen,320);
  65.     LoadPCX("ems6.pcx",screen);
  66.     _emapmem(0,20,handle);
  67.     _getv(0,0,150,83,emsframe,screen,320);
  68.     _emapmem(0,21,handle);
  69.     _getv(151,0,150,83,emsframe,screen,320);
  70.     _emapmem(0,22,handle);
  71.     _getv(0,84,150,83,emsframe,screen,320);
  72.     _emapmem(0,23,handle);
  73.     _getv(151,84,150,83,emsframe,screen,320);
  74.     LoadPCX("ems7.pcx",screen);
  75.     _emapmem(0,24,handle);
  76.     _getv(0,0,150,83,emsframe,screen,320);
  77.     _emapmem(0,25,handle);
  78.     _getv(151,0,150,83,emsframe,screen,320);
  79.     _emapmem(0,26,handle);
  80.     _getv(0,84,150,83,emsframe,screen,320);
  81.     _emapmem(0,27,handle);
  82.     _getv(151,84,150,83,emsframe,screen,320);
  83.     LoadPCX("ems8.pcx",screen);
  84.     _emapmem(0,28,handle);
  85.     _getv(0,0,150,83,emsframe,screen,320);
  86.     _emapmem(0,29,handle);
  87.     _getv(151,0,150,83,emsframe,screen,320);
  88.     _emapmem(0,30,handle);
  89.     _getv(0,84,150,83,emsframe,screen,320);
  90.     _emapmem(0,31,handle);
  91.     _getv(151,84,150,83,emsframe,screen,320);
  92.         LoadPCX("star2.pcx",screen);
  93.     _getv(0,0,320,100,back1,screen,320);
  94.     _getv(0,100,320,100,back2,screen,320);
  95.         _clearscreen(_GCLEARSCREEN);
  96.         _settextposition(0,0);
  97.     _outtext("Press any key to exit.");
  98.  
  99.     while (kbhit()==0)   /* If key is pressed end program.
  100.     {
  101.         for (count=0; count<32; count++)   /* Start loop for 32 frames of animation.
  102.         {
  103.                 _getv(4,0,316,100,buf1,back1,320); ---|
  104.         _getv(0,0,4,100,buf2,back1,320);      |- Scroll background
  105.                 _putv(0,0,316,100,buf1,back1,320);    |
  106.         _putv(316,0,4,100,buf2,back1,320); ---|
  107.         _screencopy(back1,screen2,16000);   /* Copy to virtual screen.
  108.                 _emapmem(0,count,handle);   /* Map ems page (count) to physical page 0
  109.         _spritev(85,10,150,83,emsframe,screen2,320,0);   /* and put on virtual screen.
  110.                 /* _getv(8,0,312,100,buf1,back2,320);-----------|
  111.         _getv(0,0,8,100,buf2,back2,320);                |
  112.         _putv(0,0,312,100,buf1,back2,320);              |-Delete the comment markers
  113.                 _putv(312,0,8,100,buf2,back2,320);              | to see what this code does.
  114.         _spritev(0,0,320,100,back2,screen2,320,0); */---|
  115.                 _putv(0,50,320,100,screen2,screen,320);   /* Put virtual screen to video memory.
  116.                 }
  117.     }
  118.  
  119.     _edallocmem(handle);   /* Deallocate the 32 EMS memory pages.
  120.         _setvideomode(_DEFAULTMODE);
  121. }
  122.  
  123.  
  124.