home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
677
/
GAMELIB
/
EMSDEMO.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-10-07
|
4KB
|
124 lines
#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);
}