126
|
1 #pragma once
|
|
2
|
|
3 #include <stdint.h>
|
|
4 #include <stdbool.h>
|
|
5 #include "pmplay.h"
|
|
6
|
|
7 enum
|
|
8 {
|
|
9 Status_SetVol = 1,
|
|
10 Status_SetPan = 2,
|
|
11 Status_SetFrq = 4,
|
|
12 Status_StartTone = 8,
|
|
13 Status_StopTone = 16,
|
|
14 Status_QuickVol = 32,
|
|
15
|
|
16 SType_Fwd = 1,
|
|
17 SType_Rev = 2,
|
|
18 SType_RevDir = 4,
|
|
19 SType_Off = 8,
|
|
20 SType_16 = 16,
|
|
21 SType_Fadeout = 32
|
|
22 };
|
|
23
|
|
24 typedef struct
|
|
25 {
|
|
26 const void *SBase, *SRevBase;
|
|
27 uint8_t SType, SPan, SVol;
|
|
28 int32_t SLVol1, SRVol1, SLVol2, SRVol2, SLVolIP, SRVolIP, SVolIPLen;
|
|
29 int32_t SLen, SRepS, SRepL, SPos, SMixType;
|
|
30 uint32_t SPosDec, SFrq;
|
|
31 } CIType;
|
|
32
|
|
33 typedef struct
|
|
34 {
|
|
35 const void *SBase;
|
|
36 uint8_t Status, SType;
|
|
37 int16_t SVol, SPan;
|
|
38 int32_t SFrq, SLen, SRepS, SRepL, SStartPos;
|
|
39 } WaveChannelInfoType;
|
|
40
|
|
41 extern int16_t chnReloc[32];
|
|
42 extern int32_t *CDA_MixBuffer;
|
|
43 extern CIType CI[32 * 2];
|
|
44
|
|
45 void P_SetSpeed(uint16_t bpm);
|
|
46 void P_StartTone(sampleTyp *s, int32_t smpStartPos);
|
|
47
|
|
48 // 8bb: added these two
|
|
49 bool mix_Init(int32_t audioBufferSize);
|
|
50 void mix_Free(void);
|
|
51 // -------------------
|
|
52
|
|
53 void mix_ClearChannels(void);
|
|
54 void mix_UpdateBuffer(int16_t *buffer, int32_t numSamples);
|
|
55
|
|
56 bool dump_Init(int32_t frq, int32_t amp, int16_t songPos);
|
|
57 void dump_Close(void);
|
|
58 bool dump_EndOfTune(int32_t endSongPos);
|
|
59 int32_t dump_GetFrame(int16_t *p);
|