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