87 lines
2.3 KiB
C
87 lines
2.3 KiB
C
#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);
|
|
} |