home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 10 / AU_CD10.iso / Updates / DigitalCD / !DigitalCD / Copy / PowerBars / c / DCDswi next >
Text File  |  1999-12-03  |  1KB  |  72 lines

  1. #include "DCDswi.h"
  2.  
  3. static int Player = -1;
  4. static int PlugIn = -1;
  5.  
  6. void DCDUtils_SetPlayer(int player)
  7. {
  8.     Player = player;
  9. }
  10.  
  11. _kernel_oserror* DCDUtils_RegisterPlugIn(int task, bool bFullScreen)
  12. {
  13.     _kernel_swi_regs regs;
  14.     _kernel_oserror* err;
  15.  
  16.     regs.r[1] = Player;
  17.     regs.r[2] = task;
  18.     regs.r[3] = (bFullScreen) ? 1: 0;
  19.     /* DCDUtils_RegisterPlugIn */
  20.     if ((err  = _kernel_swi(0x072783, ®s, ®s)) != NULL)
  21.         return err;
  22.  
  23.     PlugIn = regs.r[0];
  24.  
  25.     return NULL;
  26. }
  27.  
  28. _kernel_oserror* DCDUtils_DeregisterPlugIn(void)
  29. {
  30.     _kernel_swi_regs regs;
  31.  
  32.     regs.r[0] = PlugIn;
  33.     /* DCDUtils_DeregisterPlugIn */
  34.     return _kernel_swi(0x072784, ®s, ®s);
  35. }
  36.  
  37. void DCDUtils_GetInfo(int* window, int* count, int* volume, const char** title)
  38. {
  39.     _kernel_swi_regs regs;
  40.  
  41.     regs.r[0] = Player;
  42.     /* DCDUtils_GetPlayerInfo */
  43.     if(_kernel_swi(0x072786, ®s, ®s))
  44.     {
  45.         *window = -1;
  46.         *count  = 0;
  47.         *volume = 256;
  48.         title   = NULL;
  49.     }
  50.     else
  51.     {
  52.         *window = regs.r[1];
  53.         *count  = regs.r[2];
  54.         *volume = regs.r[3];
  55.         *title = (const char*) regs.r[4];
  56.     }
  57. }
  58.  
  59. int DCDUtils_GetBuffer(char2* buffer, char2* buffer_end)
  60. {
  61.     _kernel_swi_regs regs;
  62.  
  63.     regs.r[0] = Player;
  64.     regs.r[1] = (int) buffer;
  65.     regs.r[2] = (int) buffer_end;
  66.     regs.r[3] = 4; /* 8-bit, volume scaled */
  67.     /* DCDUtils_FillABuffer */
  68.     _kernel_swi(0x07278E, ®s, ®s);
  69.     buffer_end = (char2*) regs.r[2];
  70.     return buffer_end - buffer;
  71. }
  72.