Subversion Repositories pentevo

Rev

Rev 716 | Blame | Last modification | View Log | Download | RSS feed

  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
  148.