123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- /**********************************************************************
- *
- * GDV.CPP
- *
- *
- * Summary: Play a GDV file
- *
- * Author: Kevin Dudley / Tony Crowther / Graeme Ing
- *
- * Project: Normality Inc PC
- *
- * Dated: 1527995 Wednesday 27-9-1995 15:59.
- *
- **********************************************************************/
- #include <iostream.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <graph.h>
- #include <i86.h>
- #include <dos.h>
- #include <conio.h>
- #include <float.h>
- #include <time.h>
- #include <math.h>
- #include <string.h>
- #include "defines.h"
- #include "data.equ"
- #include "3deng.h"
- #include "menu.h"
- #include "video.h"
- #include "vesa.h"
- #include "unmangle.h"
- #include "memory.h"
- #include "gamedata.h"
- #include "config.h"
- #include "sos.h"
- #include "timer.h"
- #include "digi.h"
- #include "midi.h"
- #include "playdam.h" // Structure Definitions for Digital Video
- #include "playcall.h" // Call Defininitions for Digital Video
- #include "animlink.h"
- #include "calldef.h"
- #include "memstruc.h"
- #include "rothlink.h"
- #include "mallocx.h"
- #include "control.h"
- #include "eurodefs.h"
- #include "euro_fxd.h"
- #include "euro.equ"
- #include "euro_sym.h"
- #include "euro_def.h"
- #include "euro_var.h"
- #include "euro_grf.h"
- #include "euro_dsk.h"
- #include "euro_fix.h"
- #include "euro_sel.h"
- #include "euro_inf.h"
- #include "euro_cnt.h"
- #include "euro_usr.h"
- #include "euro_net.h"
- #define GDV_MEM 512*1024
- #define GDV_ABORT 0x01
- #define GDV_LOOP 0x08
- #define DEFAULT_FADEIN 0
- #define DEFAULT_FADEOUT 0
- #define DEFAULT_DELAYEXIT 25
- extern "C" volatile int count;
- extern int testVESA;
- extern int VESAmode(int *);
- extern int gdv_gran;
- extern "C" volatile char keys[256];
- extern char return_doskey;
- extern BYTE palette_buffer[];
- extern BYTE work_buffer[768];
- extern ModeInfoBlock *vmode_inf;
- char out;
- BYTE presents[]={
- 0x3F,0x33,0x00,0x3F,0x33,0x0C,0x3F,0x33,0x19,0x3F,0x3F,0x26,
- };
- //---------------------------------------------------
- long int GDVCallbackRoutine(long int mode,void *header,void *data,short int frame)
- //---------------------------------------------------
- //********************************************************************************************************************************
- // Callback generated by GDV player.
- // Test for abort GDV.
- //********************************************************************************************************************************
- {
- // Get_mouse_data(); // reads mouse data and erases last displayed mouse cursor.
- //
- // StorePSEUDObuffer( &FrontendPseudoDEFN, &FrontendTextureDEFN,
- // MOUSE_STOREbuff, MouseXposn, MouseYposn );
- // DrawIMAGE( &FrontendPseudoDEFN, &FrontendTextureDEFN, MOUSEimages+NoButton,
- // MouseXposn, MouseYposn, NO_BOX, spritecopy );
- // AddToDumpList( MouseXposn, MouseYposn, Image_Widths[MOUSEimages+NoButton], Image_Heights[MOUSEimages+NoButton]);
- // CopyDumpListToScreen();
- // DrawIMAGE( &FrontendPseudoDEFN, &FrontendTextureDEFN, MOUSE_STOREbuff,
- // MouseXposn, MouseYposn, NO_BOX, straightcopy );
- // AddToDumpList( MouseXposn, MouseYposn, Image_Widths[MOUSEimages+NoButton], Image_Heights[MOUSEimages+NoButton]);
- //
- if (mode == CBM_LookForAbort && (keys[1]) )
- {
- ChangeMenu = MAIN;
- return(CBX_Abort);
- }
- else
- return(CBX_Normal);
- }
- //********************************************************************************************************************************
- void PlayGDV()
- {
-
- char file[128];
- unsigned char *mem;
- unsigned long int Error;
- _PlayAnimBlock PlayBlock = { 0 };
- mem=(unsigned char *)mallocx(GDV_MEM); // allocate mem for player
- if (mem == 0)
- return;
- memset( mem, 0, GDV_MEM );
- strcpy (file, EuroGDVfile);
- PlayBlock.FileName = &file[0];
- PlayBlock.Flags = NULL;
- PlayBlock.Screen = 0x110;
- PlayBlock.ScreenXSize = 640;
- PlayBlock.ScreenYSize = 480;
- PlayBlock.ScreenGran = 0;
- if (SoundCard==0)
- PlayBlock.Flags|= PAF_NoAudio;
- PlayBlock.CallBack = &GDVCallbackRoutine;
- PlayBlock.DrvPath="DIGI\\";
- PlayBlock.MemBlock=mem;
- PlayBlock.MemBlockSize=GDV_MEM;
-
- if (SoundCard==0)
- PlayBlock.Flags|= PAF_NoAudio;
- else
- PlayBlock.DIGIHandle_SOS=DIGIDriverHandle;
- PlayBlock.DriveCap_SOS=&DIGICapabilities;
- PlayBlock.SNDID=SoundCard;
- PlayBlock.SNDPort=SoundPort;
- PlayBlock.SNDIRQ=SoundIRQ;
- PlayBlock.SNDDMA=SoundDMA;
- PlayBlock.SNDPara=0;
- if(!(Error=InitAnim(&PlayBlock)))
- {
- Error=StartAnim(&PlayBlock);
- CloseAnim(&PlayBlock);
- }
- freex(mem);
- }
- //********************************************************************************************************************************
- // PlaySample routines to link with Tony's ROTH sample stuff!
- //********************************************************************************************************************************
- extern WORD PlaySample (_SOS_START_SAMPLE *mysample, void (far cdecl*callback)(WORD,WORD,WORD))
- {
- mysample->lpCallback=(void cdecl (far*)(WORD,WORD,WORD))callback;
- return (sosDIGIStartSample( DIGIDriverHandle, mysample));
- } /* PlaySample */
- extern WORD StopPlaySample (WORD handle)
- {
- return (sosDIGIStopSample( DIGIDriverHandle, handle));
- }
- extern WORD ChangeSampleVol (WORD handle,int vol)
- {
- return (sosDIGISetSampleVolume( DIGIDriverHandle, handle,vol));
- }
- extern WORD ChangeSamplePan (WORD handle,int pan)
- {
- return (sosDIGISetPanLocation( DIGIDriverHandle, handle,pan));
- }
- //********************************************************************************************************************************
- void DoStadiumFlythru( char MENU )
- {
- if ( MENU == VENUE_FLYTHRU && LogicState == RUN_FRONTEND)
- PlayGDV();
- }
- //********************************************************************************************************************************
|