Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1845 yogev_ezra 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 
232
st1 TEXTEQU 
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