/* TIMER.H
*
* TempoTimer
*
* $Id: timer.h,v 1.3 1997/01/16 18:41:59 pekangas Exp $
*
* Copyright 1996,1997 Housemarque Inc.
*
* This file is part of the MIDAS Sound System, and may only be
* used, modified and distributed under the terms of the MIDAS
* Sound System license, LICENSE.TXT. By continuing to use,
* modify or distribute this file you indicate that you have
* read the license and understand and accept it fully.
*/
#ifndef __TIMER_H
#define __TIMER_H
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************\
*
* Function: int tmrGetScrSync(unsigned *scrSync);
*
* Description: Calculates the screen synchronization value for timer
*
* Input: unsigned *scrSync pointer to screen synchronization
* value
*
* Returns: MIDAS error code.
* Screen syncronization value used with tmrSyncScr() is stored
* in *scrSync.
*
\****************************************************************************/
int CALLING tmrGetScrSync(unsigned *scrSync);
/****************************************************************************\
*
* Function: int tmrInit(void);
*
* Description: Initializes TempoTimer.
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING tmrInit(void);
/****************************************************************************\
*
* Function: int tmrClose(void);
*
* Description: Uninitializes TempoTimer. MUST be called if and ONLY if
* tmrInit() has been called.
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING tmrClose(void);
/****************************************************************************\
*
* Function: int tmrPlaySD(SoundDevice *SD);
*
* Description: Starts playing sound with a Sound Device ie. calling its
* Play() function in the update rate, which is set to
* 50Hz.
*
* Input: SoundDevice *SD Sound Device that will be used
*
* Returns: MIDAS error code.
*
\****************************************************************************/
int CALLING tmrPlaySD(SoundDevice *SD);
/****************************************************************************\
*
* Function: int tmrStopSD(void);
*
* Description: Stops playing sound with the Sound Device.
*
* Returns: MIDAS error code.
*
\****************************************************************************/
int CALLING tmrStopSD(void);
/****************************************************************************\
*
* Function: int tmrPlayMusic(void *play, int *playerNum);
*
* Description: Starts playing music with the timer.
*
* Input: void *play Pointer to music playing function,
* must return MIDAS error codes
* int *playerNum Pointer to player number, used
* for stopping music
*
* Returns: MIDAS error code. Player number is written to *playerNum.
*
* Notes: There can be a maximum of 16 music players active at the
* same time.
*
\****************************************************************************/
int CALLING tmrPlayMusic(int (CALLING *play)(), int *playerNum);
/****************************************************************************\
*
* Function: int tmrStopMusic(int playerNum);
*
* Description: Stops playing music with the timer.
*
* Input: int playerNum Number of player to be stopped.
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING tmrStopMusic(int playerNum);
/****************************************************************************\
*
* Function: int tmrSyncScr(unsigned sync, void (*preVR)(),
* void (*immVR)(), void (*inVR)());
*
* Description: Synchronizes the timer to screen refresh.
*
* Input: unsigned sync Screen synchronization value returned
* by tmrGetScrSync().
* void (*preVR)() Pointer to the routine that will be
* called BEFORE Vertical Retrace
* void (*immVR)() Pointer to the routine that will be
* called immediately after Vertical
* Retrace starts
* void (*inVR)() Pointer to the routine that will be
* called some time during Vertical
* Retrace
*
* Returns: MIDAS error code
*
* Notes: preVR() and immVR() functions must be as short as possible
* and do nothing else than update counters or set some VGA
* registers to avoid timer synchronization problems. inVR()
* can take a longer time and can be used for, for example,
* setting the palette.
*
* Remember to use the correct calling convention for the xxVR()
* routines! (pascal for Pascal programs, cdecl otherwise).
*
\****************************************************************************/
int CALLING tmrSyncScr(unsigned sync, void (CALLING *preVR)(),
void (CALLING *immVR)(), void (CALLING *inVR)());
/****************************************************************************\
*
* Function: int tmrStopScrSync(void);
*
* Description: Stops synchronizing the timer to the screen.
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING tmrStopScrSync(void);
/****************************************************************************\
*
* Function: int tmrSetUpdRate(unsigned updRate);
*
* Description: Sets the timer update rate, ie. the rate at which the music
* playing routines are called
*
* Input: unsigned updRate updating rate, in 100*Hz (5000=50Hz)
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING tmrSetUpdRate(unsigned updRate);
#ifdef __cplusplus
}
#endif
/****************************************************************************\
* enum tmrFunctIDs
* ----------------
* Description: ID numbers for TempoTimer functions
\****************************************************************************/
enum tmrFunctIDs
{
ID_tmrGetScrSync = ID_tmr,
ID_tmrInit,
ID_tmrClose,
ID_tmrPlaySD,
ID_tmrStopSD,
ID_tmrPlayMusic,
ID_tmrStopMusic,
ID_tmrSyncScr,
ID_tmrStopScrSync,
ID_tmrSetUpdRate
};
#endif
/*
* $Log: timer.h,v $
* Revision 1.3 1997/01/16 18:41:59 pekangas
* Changed copyright messages to Housemarque
*
* Revision 1.2 1996/07/13 18:09:09 pekangas
* Fixed to compile with Visual C
*
* Revision 1.1 1996/05/22 20:49:33 pekangas
* Initial revision
*
*/