Subversion Repositories Kolibri OS

Rev

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

  1. ; MASM.ASM
  2. ; --------
  3. ; uFMOD public source code release. Provided as-is.
  4.  
  5. ; *** This stub allows compiling uFMOD sources using MASM32.
  6.  
  7. .386
  8. .model flat
  9.  
  10. ifdef f44100
  11.         FSOUND_MixRate = 44100
  12.         FREQ_40HZ_p    = 1DB8Bh
  13.         FREQ_40HZ_f    = 3B7160h
  14.         PCM_format     = 3
  15. else
  16.         ifdef f22050
  17.                 FSOUND_MixRate = 22050
  18.                 FREQ_40HZ_p    = 3B716h
  19.                 FREQ_40HZ_f    = 76E2C0h
  20.                 PCM_format     = 9
  21.         else
  22.                 ifndef f48000
  23.                         echo UF_FREQ not specified (defaulting to 48KHz)
  24.                 endif
  25.                 FSOUND_MixRate = 48000
  26.                 FREQ_40HZ_p    = 1B4E8h
  27.                 FREQ_40HZ_f    = 369D00h
  28.                 PCM_format     = 1
  29.         endif
  30. endif
  31.  
  32. RAMP_NONE   = 0
  33. RAMP_WEAK   = 0
  34. RAMP_STRONG = 0
  35. ifdef NONE
  36.         RAMP_NONE = 1
  37. else
  38.         ifdef WEAK
  39.                 RAMP_WEAK = 1
  40.         else
  41.                 ifndef STRONG
  42.                         echo UF_RAMP not specified (defaulting to STRONG)
  43.                 endif
  44.                 RAMP_STRONG = 1
  45.         endif
  46. endif
  47.  
  48. UCODE = 0
  49. DEBUG = 0
  50.  
  51. CHK4VALIDITY = 1
  52. ifdef UNSAFE
  53.         echo WARNING! Unsafe mod is ON. Library may crash while loading damaged XM tracks!
  54.         CHK4VALIDITY = 0
  55. endif
  56.  
  57. AC97SND_ON = 0
  58. ifdef AC97SND
  59.         AC97SND_ON = 1
  60. endif
  61.  
  62. include eff.inc
  63.  
  64. FSOUND_SAMPLE STRUC
  65.         _length   dd ?
  66.         loopstart dd ?
  67.         looplen   dd ?
  68.         defvol    db ?
  69.         finetune  db ?
  70.         bytes     db ?
  71.         defpan    db ?
  72.         relative  db ?
  73.         Resved    db ?
  74.         loopmode  db ?
  75.         _align    db ?
  76.         buff      db ?,?
  77. FSOUND_SAMPLE ENDS
  78.  
  79. FSOUND_CHANNEL STRUC
  80.         actualvolume     dd ?
  81.         actualpan        dd ?
  82.         fsampleoffset    dd ?
  83.         leftvolume       dd ?
  84.         rightvolume      dd ?
  85.         mixpos           dd ?
  86.         speedlo          dd ?
  87.         speedhi          dd ?
  88.         ramp_lefttarget  dw ?
  89.         ramp_righttarget dw ?
  90.         ramp_leftspeed   dd ?
  91.         ramp_rightspeed  dd ?
  92.         fsptr            dd ?
  93.         mixposlo         dd ?
  94.         ramp_leftvolume  dd ?
  95.         ramp_rightvolume dd ?
  96.         ramp_count       dw ?
  97.         speeddir         db ?,?
  98. FSOUND_CHANNEL ENDS
  99.  
  100. FMUSIC_NOTE STRUC
  101.         unote   db ?
  102.         number  db ?
  103.         uvolume db ?
  104.         effect  db ?
  105.         eparam  db ?
  106. FMUSIC_NOTE ENDS
  107.  
  108. FMUSIC_PATTERN STRUC
  109.         rows        dw ?
  110.         patternsize dw ?
  111.         data        dd ?
  112. FMUSIC_PATTERN ENDS
  113.  
  114. FMUSIC_INSTRUMENT STRUC
  115.         sample       dd 16 dup (?)
  116.         keymap       db 96 dup (?)
  117.         VOLPoints    dw 24 dup (?)
  118.         PANPoints    dw 24 dup (?)
  119.         VOLnumpoints db ?
  120.         PANnumpoints db ?
  121.         VOLsustain   db ?
  122.         VOLLoopStart db ?
  123.         VOLLoopEnd   db ?
  124.         PANsustain   db ?
  125.         PANLoopStart db ?
  126.         PANLoopEnd   db ?
  127.         VOLtype      db ?
  128.         PANtype      db ?
  129.         VIBtype      db ?
  130.         VIBsweep     db ?
  131.         iVIBdepth    db ?
  132.         VIBrate      db ?
  133.         VOLfade      dw ?
  134. FMUSIC_INSTRUMENT ENDS
  135.  
  136. FMUSIC_CHANNEL STRUC
  137.         note          db ?
  138.         samp          db ?
  139.         notectrl      db ?
  140.         inst          db ?
  141.         cptr          dd ?
  142.         freq          dd ?
  143.         volume        dd ?
  144.         voldelta      dd ?
  145.         freqdelta     dd ?
  146.         pan           dd ?
  147.         envvoltick    dd ?
  148.         envvolpos     dd ?
  149.         envvoldelta   dd ?
  150.         envpantick    dd ?
  151.         envpanpos     dd ?
  152.         envpandelta   dd ?
  153.         ivibsweeppos  dd ?
  154.         ivibpos       dd ?
  155.         keyoff        db ?,?
  156.         envvolstopped db ?
  157.         envpanstopped db ?
  158.         envvolfrac    dd ?
  159.         envvol        dd ?
  160.         fadeoutvol    dd ?
  161.         envpanfrac    dd ?
  162.         envpan        dd ?
  163.         period        dd ?
  164.         sampleoffset  dd ?
  165.         portatarget   dd ?
  166.         patloopno     db ?,?,?,?
  167.         patlooprow    dd ?
  168.         realnote      db ?
  169.         recenteffect  db ?
  170.         portaupdown   db ?
  171.                       db ?
  172.         xtraportadown db ?
  173.         xtraportaup   db ?
  174.         volslide      db ?
  175.         panslide      db ?
  176.         retrigx       db ?
  177.         retrigy       db ?
  178.         portaspeed    db ?
  179.         vibpos        db ?
  180.         vibspeed      db ?
  181.         vibdepth      db ?
  182.         tremolopos    db ?
  183.         tremolospeed  db ?
  184.         tremolodepth  db ?
  185.         tremorpos     db ?
  186.         tremoron      db ?
  187.         tremoroff     db ?
  188.         wavecontrol   db ?
  189.         finevslup     db ?
  190.         fineportaup   db ?
  191.         fineportadown db ?
  192. FMUSIC_CHANNEL ENDS
  193.  
  194. FMUSIC_MODULE STRUC
  195.         pattern              dd ?
  196.         instrument           dd ?
  197.         mixer_samplesleft    dd ?
  198.         globalvolume         dd ?
  199.         tick                 dd ?
  200.         speed                dd ?
  201.         order                dd ?
  202.         row                  dd ?
  203.         patterndelay         dd ?
  204.         nextorder            dd ?
  205.         nextrow              dd ?
  206.         unused1              dd ?
  207.         numchannels          dd ?
  208.         Channels             dd ?
  209.         uFMOD_Ch             dd ?
  210.         mixer_samplespertick dd ?
  211.         numorders            dw ?
  212.         restart              dw ?
  213.         numchannels_xm       db ?
  214.         globalvsl            db ?
  215.         numpatternsmem       dw ?
  216.         numinsts             dw ?
  217.         flags                dw ?
  218.         defaultspeed         dw ?
  219.         defaultbpm           dw ?
  220.         orderlist            db 256 dup (?)
  221. FMUSIC_MODULE ENDS
  222.  
  223. FMUSIC_MODULE_size     = SIZE FMUSIC_MODULE
  224. FSOUND_CHANNEL_size    = SIZE FSOUND_CHANNEL
  225. FMUSIC_CHANNEL_size    = SIZE FMUSIC_CHANNEL
  226. FMUSIC_INSTRUMENT_size = SIZE FMUSIC_INSTRUMENT
  227. FMUSIC_PATTERN_size    = SIZE FMUSIC_PATTERN
  228. FMUSIC_NOTE_size       = SIZE FMUSIC_NOTE
  229.  
  230. ; FPU register stack
  231. st0 TEXTEQU <st(0)>
  232. st1 TEXTEQU <st(1)>
  233.  
  234. .CODE
  235. include ufmod.asm
  236. include core.asm
  237.  
  238. .DATA?
  239. _mod          = $        
  240.               FMUSIC_MODULE<>
  241. mmt           dd ?,?,?
  242. ufmod_heap    dd ?,?
  243. if AC97SND_ON
  244.         EXTERN hSound:DWORD
  245.               dd ?
  246. else
  247.         hSound dd ?
  248. endif
  249. hBuff         dd ?
  250. SW_Exit       dd ?
  251. MixBuf        db FSOUND_BlockSize*8 dup (?)
  252. ufmod_noloop  db ?
  253. ufmod_pause_  db ?
  254. mix_endflag   db ?,?
  255. mmf           dd ?,?,?,?
  256. ufmod_vol     dd ?
  257. uFMOD_fopen   dd ?
  258. uFMOD_fread   dd ?
  259. file_struct   dd 7 dup (?)
  260. cache_offset  dd ?
  261. if INFO_API_ON
  262.         time_ms dd ?
  263.         L_vol   dw ?
  264.         R_vol   dw ?
  265.         s_row   dw ?
  266.         s_order dw ?
  267.         szTtl   db 24 dup (?)
  268. endif
  269. DummySamp FSOUND_SAMPLE<>
  270. end
  271.