Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
716 lvd 1
#include "std.h"
2
 
3
#include "emul.h"
4
#include "vars.h"
5
 
6
#include "util.h"
7
 
8
#if defined(MOD_GSZ80) || defined(MOD_GSBASS)
9
namespace BASS
10
{
11
/* BASS-specific functions and variables */
12
TGetVersion          GetVersion;
13
TInit                Init;
14
TFree                Free;
15
TPause               Pause;
16
TStart               Start;
17
TStop                Stop;
18
TGetConfig           GetConfig;
19
TSetConfig           SetConfig;
20
TGetInfo             GetInfo;
21
 
22
TMusicFree           MusicFree;
23
TMusicLoad           MusicLoad;
24
TChannelPause        ChannelPause;
25
TChannelPlay         ChannelPlay;
26
TChannelStop         ChannelStop;
27
 
28
TChannelGetPosition  ChannelGetPosition;
29
TChannelSetPosition  ChannelSetPosition;
30
TChannelSetAttribute ChannelSetAttribute;
31
TChannelGetLevel     ChannelGetLevel;
32
TErrorGetCode        ErrorGetCode;
33
TChannelFlags        ChannelFlags;
34
 
35
TChannelBytes2Seconds ChannelBytes2Seconds;
36
 
37
TChannelIsActive ChannelIsActive;
38
 
39
TStreamCreate        StreamCreate;
40
TStreamCreateFileUser StreamCreateFileUser;
41
TStreamFree          StreamFree;
42
 
43
HMODULE Bass = 0;
44
 
45
void Load()
46
{
47
   if(Bass)
48
       return;
49
 
50
   Bass = LoadLibrary("bass.dll");
51
   if (!Bass)
52
       errexit("can't load bass.dll");
53
 
54
   GetVersion = (TGetVersion)GetProcAddress(Bass, "BASS_GetVersion");
55
   if (!GetVersion || (HIWORD(GetVersion()) != 0x0204))
56
      errexit("unexpected BASS version. unreal requires BASS 2.4");
57
 
58
   ErrorGetCode = (BASS::TErrorGetCode)GetProcAddress(Bass, "BASS_ErrorGetCode");
59
   Init = (TInit)GetProcAddress(Bass, "BASS_Init");
60
   Free = (TFree)GetProcAddress(Bass, "BASS_Free");
61
   Pause = (TPause)GetProcAddress(Bass, "BASS_Pause");
62
   Start = (TStart)GetProcAddress(Bass, "BASS_Start");
63
   Stop = (TStop)GetProcAddress(Bass, "BASS_Stop");
64
   SetConfig = (TSetConfig)GetProcAddress(Bass, "BASS_SetConfig");
65
   GetConfig = (TGetConfig)GetProcAddress(Bass, "BASS_GetConfig");
66
   GetInfo = (TGetInfo)GetProcAddress(Bass, "BASS_GetInfo");
67
 
68
   MusicFree = (TMusicFree)GetProcAddress(Bass, "BASS_MusicFree");
69
   MusicLoad = (TMusicLoad)GetProcAddress(Bass, "BASS_MusicLoad");
70
   ChannelPlay = (TChannelPlay)GetProcAddress(Bass, "BASS_ChannelPlay");
71
   ChannelPause = (TChannelPause)GetProcAddress(Bass, "BASS_ChannelPause");
72
   ChannelStop = (TChannelStop)GetProcAddress(Bass, "BASS_ChannelStop");
73
 
74
   ChannelGetPosition = (TChannelGetPosition)GetProcAddress(Bass, "BASS_ChannelGetPosition");
75
   ChannelSetPosition = (TChannelSetPosition)GetProcAddress(Bass, "BASS_ChannelSetPosition");
76
   ChannelSetAttribute = (TChannelSetAttribute)GetProcAddress(Bass, "BASS_ChannelSetAttribute");
77
   ChannelFlags = (TChannelFlags)GetProcAddress(Bass, "BASS_ChannelFlags");
78
   ChannelGetLevel = (TChannelGetLevel)GetProcAddress(Bass, "BASS_ChannelGetLevel");
79
   ChannelBytes2Seconds = (TChannelBytes2Seconds)GetProcAddress(Bass, "BASS_ChannelBytes2Seconds");
80
   ChannelIsActive = (TChannelIsActive)GetProcAddress(Bass, "BASS_ChannelIsActive");
81
 
82
   StreamCreate = (TStreamCreate)GetProcAddress(Bass, "BASS_StreamCreate");
83
   StreamCreateFileUser = (TStreamCreateFileUser)GetProcAddress(Bass, "BASS_StreamCreateFileUser");
84
   StreamFree = (TStreamFree)GetProcAddress(Bass, "BASS_StreamFree");
85
 
86
   if (!Init)
87
       errexit("can't import BASS API: BASS_Init");
88
   if (!Free)
89
       errexit("can't import BASS API: BASS_Free");
90
   if (!Pause)
91
       errexit("can't import BASS API: BASS_Pause");
92
   if (!Start)
93
       errexit("can't import BASS API: BASS_Start");
94
   if (!Stop)
95
       errexit("can't import BASS API: BASS_Stop");
96
   if (!MusicFree)
97
       errexit("can't import BASS API: BASS_MusicFree");
98
   if (!MusicLoad)
99
       errexit("can't import BASS API: BASS_MusicLoad");
100
   if (!GetConfig)
101
       errexit("can't import BASS API: BASS_GetConfig");
102
   if (!SetConfig)
103
       errexit("can't import BASS API: BASS_SetConfig");
104
   if (!GetInfo)
105
       errexit("can't import BASS API: BASS_GetInfo");
106
   if (!ChannelFlags)
107
       errexit("can't import BASS API: BASS_ChannelFlags");
108
   if (!ChannelSetAttribute)
109
       errexit("can't import BASS API: BASS_ChannelSetAttribute");
110
   if (!ChannelGetPosition)
111
       errexit("can't import BASS API: BASS_ChannelGetPosition");
112
   if (!ChannelSetPosition)
113
       errexit("can't import BASS API: BASS_ChannelSetPosition");
114
   if (!ChannelGetLevel)
115
       errexit("can't import BASS API: BASS_ChannelGetLevel");
116
   if (!ChannelBytes2Seconds)
117
       errexit("can't import BASS API: BASS_ChannelBytes2Seconds");
118
   if (!ChannelIsActive)
119
       errexit("can't import BASS API: BASS_ChannelIsActive");
120
   if (!ChannelPlay)
121
       errexit("can't import BASS API: BASS_ChannelPlay");
122
   if (!ChannelPause)
123
       errexit("can't import BASS API: BASS_ChannelPause");
124
   if (!ChannelStop)
125
       errexit("can't import BASS API: BASS_ChannelStop");
126
   if (!ErrorGetCode)
127
       errexit("can't import BASS API: BASS_ErrorGetCode");
128
   if (!StreamCreate)
129
       errexit("can't import BASS API: BASS_StreamCreate");
130
   if (!StreamCreateFileUser)
131
       errexit("can't import BASS API: BASS_StreamCreateFileUser");
132
   if (!StreamFree)
133
       errexit("can't import BASS API: BASS_StreamFree");
134
}
135
 
136
void Unload()
137
{
138
    if(Bass)
139
    {
140
        if(Free)
141
            Free();
142
        FreeLibrary(Bass);
143
    }
144
}
145
 
146
}
147
#endif