home *** CD-ROM | disk | FTP | other *** search
/ RISCWORLD 7 / RISCWORLD_VOL7.iso / Software / Issue4 / IYONIX / MANICMINER / SOURCE.ZIP / manicminer-1.6.3 / systems / riscos / c / ROsoundOld < prev   
Encoding:
Text File  |  2000-12-09  |  2.9 KB  |  181 lines

  1. /* RISC OS sound support for Manic Miner */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "ROsound.h"
  6. #include "ROsupport.h"
  7.  
  8. /* ////////////////////////////////////////////////////////////
  9. //  Audio Stuff
  10. //////////////////////////////////////////////////////////// */
  11. /*#define  INGAMEpc  0x00 */
  12. /*#define  INGAMEspec  0x09 */
  13. /*#define  TITLEmusic  0x0d */
  14. /*#define  OPTIONSmusic  0x12 */
  15. /*#define  FINALcavern  0x16 */
  16. /*#define  ENDsequence  0x20 */
  17.  
  18. /*BYTE VOL=64; */
  19.  
  20. /*BYTE MUSICh; */
  21.  
  22. /*WORD volatile FrCt=0; */
  23.  
  24. /*void *wav=0, *die=0, *pick=0;*/
  25. /*MIDASsample *mod; */
  26. /*MIDASmodulePlayHandle  modon=0; */
  27.  
  28.  
  29. const char *
  30. loadSamples (void)
  31. {
  32.   long len;
  33.   int i;
  34.   long *p;
  35.   FILE *in;
  36.  
  37.   in = fopen (using_16bit ? "<Manic$Dir>.mm-samp16" : "<Manic$Dir>.mm-samp8",
  38.           "rb");
  39.   if (!in)
  40.     return "Failed to load sample data";
  41.   fseek (in, 0, SEEK_END);
  42.   len = ftell (in);
  43.   fseek (in, 0, SEEK_SET);
  44.   p = malloc ((int) len);
  45.   if (!p)
  46.     return "Failed to load sample data";
  47.   i = fread (p, (int) len, 1, in);
  48.   fclose (in);
  49.   if (i != 1)
  50.     return "Failed to load sample data";
  51.  
  52.   for (i = 0; i < 4; ++i) {
  53.     if (p[0] >= 0) {
  54.       sampleptr[i].repeat = p[1];
  55.       sampleptr[i].ptr = p + 2;    /* 8 bytes on... */
  56.       sampleptr[i].end = p + (2 + p[0] / 4);
  57.       p += (p[0] + 11) / 4;    /* n+2 words :-) */
  58.     }
  59.     else {
  60.       int j = (int) (~*p++);    /* j<i */
  61.       sampleptr[i].repeat = sampleptr[j].repeat;
  62.       sampleptr[i].ptr = sampleptr[j].ptr;
  63.       sampleptr[i].end = sampleptr[j].end;
  64.     }
  65.   }
  66.   return 0;
  67. }
  68.  
  69. /* ////////////////////////////////////////////////////////////
  70. //  Play beep...
  71. //////////////////////////////////////////////////////////// */
  72.  
  73. #define CONV(p) ((p<<12)/samplefreq)
  74. #define LONG (4096)
  75.  
  76. static void
  77. Sound (unsigned int channel, int sample, int pitch /*Hz */ , int len /*cs */ )
  78. {
  79.   if (channel < 2) {
  80.     wavpitch[channel] = CONV (pitch);
  81.     wavsample[channel] = sample;
  82.     wavlen[channel] = len * samplefreq / 100;
  83.   }
  84. }
  85.  
  86.  
  87. void
  88. wavPitchBend (unsigned int channel, int pitch)
  89. {
  90.   if (channel < 2)
  91.     wavpitch[channel] = CONV (pitch);
  92. }
  93.  
  94.  
  95. void
  96. quiet (unsigned int channel)
  97. {
  98.   if (channel < 2)
  99.     wavpitch[channel] = 0;
  100. }
  101.  
  102.  
  103. void
  104. mm_snd_playmod (int patnum)
  105. {
  106.   switch (patnum) {
  107.   case 0:
  108.     musicPlay (0, 9, 0);
  109.     return;
  110.   case 9:
  111.     musicPlay (9, 13, 0);
  112.     return;
  113.   case 13:
  114.     musicPlay (13, 18, 1);
  115.     return;
  116.   case 18:
  117.     musicPlay (18, 22, 0);
  118.     return;
  119.   case 32:
  120.     musicPlay (32, 60, 0);
  121.     return;
  122.   default:
  123.     musicPause (0);
  124.   }
  125. }
  126.  
  127.  
  128. void
  129. mm_snd_update (void)
  130. {
  131. }
  132.  
  133.  
  134. void
  135. mm_snd_stopmod (void)
  136. {
  137.   musicPause (0);        /*musicPlay(17,**18,** 0); */
  138. }
  139.  
  140.  
  141. void
  142. mm_snd_jump (unsigned int rate)
  143. {
  144.   Sound (0, 0, rate, 2);
  145. }
  146.  
  147.  
  148. void
  149. mm_snd_jump2 (unsigned int rate)
  150. {
  151.   Sound (1, 0, rate, 2);
  152. }
  153.  
  154.  
  155. void
  156. mm_snd_die (unsigned int rate)
  157. {
  158.   Sound (1, 1, rate, LONG);
  159. }
  160.  
  161.  
  162. void
  163. mm_snd_pick (unsigned int rate)
  164. {
  165.   Sound (1, 2, rate, LONG);
  166. }
  167.  
  168.  
  169. void
  170. mm_snd_mute (void)
  171. {
  172.   musicPause (0);
  173. }
  174.  
  175. void
  176. mm_snd_unmute (void)
  177. {
  178.   musicPause (1);
  179. }
  180.  
  181.