Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5253 mario79 1
;------------------------------------------------------------------------------
2
; init.obj
3
;	_InitSound@4		Инит,
4
;	_CreateBuffer@12	создать буфер,
5
;	_DestroyBuffer@4	удалить буфер
6
;
7
; sndgetsize.obj
8
;	_GetBufferSize@8	взять размер буфера,
9
;	_GetBufferFree@8	WTF???
10
;
11
; setbuf.obj
12
;	_SetBuffer@16		установить буфер,
13
;	_PlayBuffer@8		играть буфер,
14
;
15
; stopbuf.obj
16
;	_StopBuffer@4		остановить буфер,
17
;------------------------------------------------------------------------------
18
initialize_sound_system:
19
	mov	[sound_flag],1
20
 
21
	stdcall	_InitSound@4,version
22
	cmp	eax,-1
23
	je	snd_init_fail
24
 
25
;	DEBUGF	1, "Sound init successful %x\n",eax
26
	mov	eax,[version]
27
	and	eax,0xffff
28
	cmp	eax,SOUND_VERSION
29
	jne	snd_version_fail
30
 
31
;	DEBUGF	1, "Sound version successful %x\n",eax
32
 
33
	stdcall	_test_wav@4,dword [wav_for_test]	;letter_1a
34
	test	eax,eax
35
	jz	snd_test_wav_fail
36
 
37
	or	eax,PCM_OUT
38
	mov	[snd_format],eax
39
 
40
;	DEBUGF	1, "Test wav successful %x\n",eax
41
 
42
	call	find_data_offset
43
 
44
	mov	al,[sound_flag]
45
	test	al,al
46
	jz	.exit
47
 
48
	stdcall	_CreateBuffer@12,[snd_format],0,hBuff1
49
	cmp	eax,-1
50
	je	snd_create_buffer_fail
51
 
52
;	DEBUGF	1, "Create Buffer 1 successful %x\n",eax
53
 
54
	stdcall	_CreateBuffer@12,[snd_format],0,hBuff2
55
	cmp	eax,-1
56
	je	snd_create_buffer_fail
57
 
58
;	DEBUGF	1, "Create Buffer 1 successful %x\n",eax
59
;--------------------------------------
60
.exit:
61
	ret
62
;------------------------------------------------------------------------------
63
find_data_offset:
64
	mov	esi,[wav_for_test]	;letter_1a
65
;--------------------------------------
66
@@:
67
	cmp	[esi],dword 'data'
68
	je	@f
69
 
70
	inc	esi
71
	cmp	esi,[wav_for_test_end]	;letter_1a + letter_2b
72
	jne	@b
73
 
74
;	DEBUGF	1, "find data offset fail\n"
75
	mov	[sound_flag],0
76
	ret
77
;--------------------------------------
78
@@:
79
	sub	esi,[wav_for_test]	;letter_1a
80
	add	esi,4
81
	mov	[data_offset],esi
82
	ret
83
;------------------------------------------------------------------------------
84
wave_out:
85
; in:
86
; eax - adress of wav sample
87
; ebp - hBuff	; hardware buffer
88
	pusha
89
;	DEBUGF	1, "Wave out\n"
90
; check for correct data_offset
91
	push	eax
92
	add	eax,[data_offset]
93
	sub	eax,4
94
	cmp	[eax],dword 'data'
95
	pop	eax
96
	je	@f
97
 
98
	mov	[wav_for_test],eax
99
	mov	ebx,eax
100
	add	ebx,1024
101
	mov	[wav_for_test_end],ebx
102
	call	find_data_offset
103
	cmp	[sound_flag],0
104
	jz	.exit
105
;--------------------------------------
106
@@:
107
	add	eax,[data_offset]
108
	mov	ebx,[eax]
109
	add	eax,4
110
;	DEBUGF	1, "src EAX: %x size EBX: %x\n",eax,ebx
111
;	stdcall	_WaveOut@12,[hBuff],eax,ebx
112
	stdcall	_WaveOut@12,ebp,eax,ebx
113
;	DEBUGF	1, "return EAX: %x\n",eax
114
	cmp	eax,-1
115
	popa
116
	je	snd_wave_out_fail
117
;--------------------------------------
118
.exit:
119
	ret
120
;------------------------------------------------------------------------------
121
snd_init_fail:
122
;	DEBUGF	1, "Sound init fail %x\n",eax
123
	mov	[sound_flag],0
124
	ret
125
;------------------------------------------------------------------------------
126
snd_version_fail:
127
;	DEBUGF	1, "Sound version fail %x\n",eax
128
	mov	[sound_flag],0
129
	ret
130
;------------------------------------------------------------------------------
131
snd_test_wav_fail:
132
;	DEBUGF	1, "Test wav fail %x\n",eax
133
	mov	[sound_flag],0
134
	ret
135
;------------------------------------------------------------------------------
136
snd_create_buffer_fail:
137
;	DEBUGF	1, "Create Buffer fail %x\n",eax
138
	mov	[sound_flag],0
139
	ret
140
;------------------------------------------------------------------------------
141
snd_wave_out_fail:
142
;	DEBUGF	1, "Wave Out fail\n"
143
	mov	[sound_flag],0
144
	ret
145
;------------------------------------------------------------------------------
146
snd_background_music_thread_start:
147
	mov	eax,[background_music]
148
	mov	ebp,[hBuff1]
149
	call	wave_out
150
	jmp	snd_background_music_thread_start
151
;	mcall	-1
152
;------------------------------------------------------------------------------
153
snd_kick_action:
154
	cmp	[snd_kick_flag],1
155
	je	@f
156
 
157
	mcall	51,1,snd_kick_action_thread_start,snd_kick_action_thread_stack
158
;--------------------------------------
159
@@:
160
	ret
161
;------------------------------------------------------------------------------
162
snd_kick_action_thread_start:
163
	mov	[snd_kick_flag],1
164
	mov	eax,[stone_kick_sound]
165
	mov	ebp,[hBuff2]
166
	call	wave_out
167
	mov	[snd_kick_flag],0
168
	mcall	-1
169
;------------------------------------------------------------------------------