Initial commit
This commit is contained in:
87
LIB386/LIB_SAMP/GUS.C
Normal file
87
LIB386/LIB_SAMP/GUS.C
Normal file
@@ -0,0 +1,87 @@
|
||||
#include "\projet\lib386\lib_sys\adeline.h"
|
||||
#include "\projet\lib386\lib_sys\lib_sys.h"
|
||||
|
||||
#pragma library ("\gussdk21\libs\ultra0wc.lib");
|
||||
|
||||
#include "forte.h"
|
||||
#include "gf1proto.h"
|
||||
#include "extern.h"
|
||||
#include "ultraerr.h"
|
||||
|
||||
|
||||
extern void NewIRQ(void);
|
||||
|
||||
|
||||
extern void *BUFFER_DMA;
|
||||
|
||||
extern ULONG R_BUFFER_CARD;
|
||||
extern ULONG MID_R_BUFFER_CARD;
|
||||
extern ULONG CURRENT_R_BUFFER_CARD;
|
||||
|
||||
extern ULONG L_BUFFER_CARD;
|
||||
extern ULONG MID_L_BUFFER_CARD;
|
||||
extern ULONG CURRENT_L_BUFFER_CARD;
|
||||
|
||||
extern LONG BUFFER_SIZE;
|
||||
extern UWORD PlayRate;
|
||||
|
||||
|
||||
void ResetCard(void)
|
||||
{
|
||||
ULTRA_CFG config;
|
||||
UBYTE RMode, LMode;
|
||||
|
||||
/* Get the ULTRASND environment string parameters */
|
||||
UltraGetCfg(&config);
|
||||
|
||||
/* Open the card with 14 voices (44 Khz) */
|
||||
UltraOpen(&config, 14);
|
||||
|
||||
/* Get a chunk of memory on the card */
|
||||
UltraMemAlloc(BUFFER_SIZE << 1, &R_BUFFER_CARD);
|
||||
MID_R_BUFFER_CARD = R_BUFFER_CARD + BUFFER_SIZE;
|
||||
CURRENT_R_BUFFER_CARD = MID_R_BUFFER_CARD;
|
||||
|
||||
/* Reset memory on the card to 0 */
|
||||
UltraDownload(BUFFER_DMA, DMA_8|DMA_CVT_2, R_BUFFER_CARD, BUFFER_SIZE, TRUE);
|
||||
UltraDownload(BUFFER_DMA, DMA_8|DMA_CVT_2, MID_R_BUFFER_CARD, BUFFER_SIZE, TRUE);
|
||||
|
||||
/* Get a chunk of memory on the card */
|
||||
UltraMemAlloc(BUFFER_SIZE << 1, &L_BUFFER_CARD);
|
||||
MID_L_BUFFER_CARD = L_BUFFER_CARD + BUFFER_SIZE;
|
||||
CURRENT_L_BUFFER_CARD = MID_L_BUFFER_CARD;
|
||||
|
||||
/* Reset memory on the card to 0 */
|
||||
UltraDownload(BUFFER_DMA, DMA_8|DMA_CVT_2, L_BUFFER_CARD, BUFFER_SIZE, TRUE);
|
||||
UltraDownload(BUFFER_DMA, DMA_8|DMA_CVT_2, MID_L_BUFFER_CARD, BUFFER_SIZE, TRUE);
|
||||
|
||||
/* set Balance for each voice */
|
||||
UltraSetBalance(0, 7);
|
||||
UltraSetBalance(1, 7);
|
||||
|
||||
/* Set Frequency for each voice to PlayRate */
|
||||
UltraSetFrequency(0, PlayRate);
|
||||
UltraSetFrequency(1, PlayRate);
|
||||
|
||||
/* set Volume for each voice */
|
||||
UltraSetVolume(0, 511);
|
||||
UltraSetVolume(1, 511);
|
||||
|
||||
/* get voices ready... */
|
||||
RMode = UltraPrimeVoice(0, R_BUFFER_CARD, R_BUFFER_CARD,
|
||||
R_BUFFER_CARD + (BUFFER_SIZE << 1), 0x20 | 0x08 | 0x04);
|
||||
LMode = UltraPrimeVoice(1, L_BUFFER_CARD, MID_L_BUFFER_CARD,
|
||||
L_BUFFER_CARD + (BUFFER_SIZE << 1), 0x20 | 0x08 | 0x04);
|
||||
|
||||
/* Plug in our IRQ handler for wave events */
|
||||
UltraWaveHandler(NewIRQ);
|
||||
|
||||
/*set, go ! */
|
||||
UltraGoVoice(0, RMode);
|
||||
UltraGoVoice(1, LMode);
|
||||
}
|
||||
|
||||
void StartDMACard(void)
|
||||
{
|
||||
UltraDownload(BUFFER_DMA, DMA_8|DMA_CVT_2, CURRENT_R_BUFFER_CARD, BUFFER_SIZE, FALSE);
|
||||
}
|
||||
Reference in New Issue
Block a user