; MASM.ASM ; -------- ; uFMOD public source code release. Provided as-is. ; *** This stub allows compiling uFMOD sources using MASM32. .386 .model flat ifdef f44100 FSOUND_MixRate = 44100 FREQ_40HZ_p = 1DB8Bh FREQ_40HZ_f = 3B7160h PCM_format = 3 else ifdef f22050 FSOUND_MixRate = 22050 FREQ_40HZ_p = 3B716h FREQ_40HZ_f = 76E2C0h PCM_format = 9 else ifndef f48000 echo UF_FREQ not specified (defaulting to 48KHz) endif FSOUND_MixRate = 48000 FREQ_40HZ_p = 1B4E8h FREQ_40HZ_f = 369D00h PCM_format = 1 endif endif RAMP_NONE = 0 RAMP_WEAK = 0 RAMP_STRONG = 0 ifdef NONE RAMP_NONE = 1 else ifdef WEAK RAMP_WEAK = 1 else ifndef STRONG echo UF_RAMP not specified (defaulting to STRONG) endif RAMP_STRONG = 1 endif endif UCODE = 0 DEBUG = 0 CHK4VALIDITY = 1 ifdef UNSAFE echo WARNING! Unsafe mod is ON. Library may crash while loading damaged XM tracks! CHK4VALIDITY = 0 endif AC97SND_ON = 0 ifdef AC97SND AC97SND_ON = 1 endif include eff.inc FSOUND_SAMPLE STRUC _length dd ? loopstart dd ? looplen dd ? defvol db ? finetune db ? bytes db ? defpan db ? relative db ? Resved db ? loopmode db ? _align db ? buff db ?,? FSOUND_SAMPLE ENDS FSOUND_CHANNEL STRUC actualvolume dd ? actualpan dd ? fsampleoffset dd ? leftvolume dd ? rightvolume dd ? mixpos dd ? speedlo dd ? speedhi dd ? ramp_lefttarget dw ? ramp_righttarget dw ? ramp_leftspeed dd ? ramp_rightspeed dd ? fsptr dd ? mixposlo dd ? ramp_leftvolume dd ? ramp_rightvolume dd ? ramp_count dw ? speeddir db ?,? FSOUND_CHANNEL ENDS FMUSIC_NOTE STRUC unote db ? number db ? uvolume db ? effect db ? eparam db ? FMUSIC_NOTE ENDS FMUSIC_PATTERN STRUC rows dw ? patternsize dw ? data dd ? FMUSIC_PATTERN ENDS FMUSIC_INSTRUMENT STRUC sample dd 16 dup (?) keymap db 96 dup (?) VOLPoints dw 24 dup (?) PANPoints dw 24 dup (?) VOLnumpoints db ? PANnumpoints db ? VOLsustain db ? VOLLoopStart db ? VOLLoopEnd db ? PANsustain db ? PANLoopStart db ? PANLoopEnd db ? VOLtype db ? PANtype db ? VIBtype db ? VIBsweep db ? iVIBdepth db ? VIBrate db ? VOLfade dw ? FMUSIC_INSTRUMENT ENDS FMUSIC_CHANNEL STRUC note db ? samp db ? notectrl db ? inst db ? cptr dd ? freq dd ? volume dd ? voldelta dd ? freqdelta dd ? pan dd ? envvoltick dd ? envvolpos dd ? envvoldelta dd ? envpantick dd ? envpanpos dd ? envpandelta dd ? ivibsweeppos dd ? ivibpos dd ? keyoff db ?,? envvolstopped db ? envpanstopped db ? envvolfrac dd ? envvol dd ? fadeoutvol dd ? envpanfrac dd ? envpan dd ? period dd ? sampleoffset dd ? portatarget dd ? patloopno db ?,?,?,? patlooprow dd ? realnote db ? recenteffect db ? portaupdown db ? db ? xtraportadown db ? xtraportaup db ? volslide db ? panslide db ? retrigx db ? retrigy db ? portaspeed db ? vibpos db ? vibspeed db ? vibdepth db ? tremolopos db ? tremolospeed db ? tremolodepth db ? tremorpos db ? tremoron db ? tremoroff db ? wavecontrol db ? finevslup db ? fineportaup db ? fineportadown db ? FMUSIC_CHANNEL ENDS FMUSIC_MODULE STRUC pattern dd ? instrument dd ? mixer_samplesleft dd ? globalvolume dd ? tick dd ? speed dd ? order dd ? row dd ? patterndelay dd ? nextorder dd ? nextrow dd ? unused1 dd ? numchannels dd ? Channels dd ? uFMOD_Ch dd ? mixer_samplespertick dd ? numorders dw ? restart dw ? numchannels_xm db ? globalvsl db ? numpatternsmem dw ? numinsts dw ? flags dw ? defaultspeed dw ? defaultbpm dw ? orderlist db 256 dup (?) FMUSIC_MODULE ENDS FMUSIC_MODULE_size = SIZE FMUSIC_MODULE FSOUND_CHANNEL_size = SIZE FSOUND_CHANNEL FMUSIC_CHANNEL_size = SIZE FMUSIC_CHANNEL FMUSIC_INSTRUMENT_size = SIZE FMUSIC_INSTRUMENT FMUSIC_PATTERN_size = SIZE FMUSIC_PATTERN FMUSIC_NOTE_size = SIZE FMUSIC_NOTE ; FPU register stack st0 TEXTEQU st1 TEXTEQU .CODE include ufmod.asm include core.asm .DATA? _mod = $ FMUSIC_MODULE<> mmt dd ?,?,? ufmod_heap dd ?,? if AC97SND_ON EXTERN hSound:DWORD dd ? else hSound dd ? endif hBuff dd ? SW_Exit dd ? MixBuf db FSOUND_BlockSize*8 dup (?) ufmod_noloop db ? ufmod_pause_ db ? mix_endflag db ?,? mmf dd ?,?,?,? ufmod_vol dd ? uFMOD_fopen dd ? uFMOD_fread dd ? file_struct dd 7 dup (?) cache_offset dd ? if INFO_API_ON time_ms dd ? L_vol dw ? R_vol dw ? s_row dw ? s_order dw ? szTtl db 24 dup (?) endif DummySamp FSOUND_SAMPLE<> end