home *** CD-ROM | disk | FTP | other *** search
- #include <conio.h>
- #include <graph.h>
- #include <games.h>
-
- int emsframe,count=0,screen=40960,screen2,back1,back2,buf1,buf2;
- main()
- {
- int handle;
- buf1=_amem(2000);
- buf2=_amem(400);
- screen2=_amem(2000); /* Allocate memory for buffers
- back1=_amem(2000);
- back2=_amem(2000);
-
- handle=_eallocmem(32); /* Allocate 32 ems pages and get their handle
- emsframe=_epageframe(); /* Get address of page frame
- _setvideomode(_MRES256COLOR);
-
- /* Load frames for animation and store them in expanded memory */
- LoadPCX("ems1.pcx",screen);
- _emapmem (0,0,handle); /* Move ems page 0 to physical page 0 and store first frame.
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,1,handle); /* Move ems page 1 to physical page 0 and store frame 2.
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,2,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,3,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems2.pcx",screen);
- _emapmem(0,4,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,5,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,6,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,7,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems3.pcx",screen);
- _emapmem(0,8,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,9,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,10,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,11,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems4.pcx",screen);
- _emapmem(0,12,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,13,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,14,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,15,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems5.pcx",screen);
- _emapmem(0,16,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,17,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,18,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,19,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems6.pcx",screen);
- _emapmem(0,20,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,21,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,22,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,23,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems7.pcx",screen);
- _emapmem(0,24,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,25,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,26,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,27,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("ems8.pcx",screen);
- _emapmem(0,28,handle);
- _getv(0,0,150,83,emsframe,screen,320);
- _emapmem(0,29,handle);
- _getv(151,0,150,83,emsframe,screen,320);
- _emapmem(0,30,handle);
- _getv(0,84,150,83,emsframe,screen,320);
- _emapmem(0,31,handle);
- _getv(151,84,150,83,emsframe,screen,320);
- LoadPCX("star2.pcx",screen);
- _getv(0,0,320,100,back1,screen,320);
- _getv(0,100,320,100,back2,screen,320);
- _clearscreen(_GCLEARSCREEN);
- _settextposition(0,0);
- _outtext("Press any key to exit.");
-
- while (kbhit()==0) /* If key is pressed end program.
- {
- for (count=0; count<32; count++) /* Start loop for 32 frames of animation.
- {
- _getv(4,0,316,100,buf1,back1,320); ---|
- _getv(0,0,4,100,buf2,back1,320); |- Scroll background
- _putv(0,0,316,100,buf1,back1,320); |
- _putv(316,0,4,100,buf2,back1,320); ---|
- _screencopy(back1,screen2,16000); /* Copy to virtual screen.
- _emapmem(0,count,handle); /* Map ems page (count) to physical page 0
- _spritev(85,10,150,83,emsframe,screen2,320,0); /* and put on virtual screen.
- /* _getv(8,0,312,100,buf1,back2,320);-----------|
- _getv(0,0,8,100,buf2,back2,320); |
- _putv(0,0,312,100,buf1,back2,320); |-Delete the comment markers
- _putv(312,0,8,100,buf2,back2,320); | to see what this code does.
- _spritev(0,0,320,100,back2,screen2,320,0); */---|
- _putv(0,50,320,100,screen2,screen,320); /* Put virtual screen to video memory.
- }
- }
-
- _edallocmem(handle); /* Deallocate the 32 EMS memory pages.
- _setvideomode(_DEFAULTMODE);
- }
-
-
-