Moved audio code to audio.c/h
This commit is contained in:
29
src/audio.c
Normal file
29
src/audio.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#include "lib/cmixer/cmixer.h"
|
||||||
|
#include "soundblaster.h"
|
||||||
|
|
||||||
|
|
||||||
|
static short audio_buffer[SOUNDBLASTER_SAMPLES_PER_BUFFER * 2];
|
||||||
|
|
||||||
|
static const short* audio_callback(void) {
|
||||||
|
/* For the moment the soundblaster code expects mono audio while the cmixer
|
||||||
|
** library outputs stereo -- we process to a stereo buffer, then copy the left
|
||||||
|
** channel to the start of the buffer */
|
||||||
|
int i;
|
||||||
|
int len = SOUNDBLASTER_SAMPLES_PER_BUFFER;
|
||||||
|
cm_process(audio_buffer, len * 2);
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
audio_buffer[i] = audio_buffer[i * 2];
|
||||||
|
}
|
||||||
|
return audio_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void audio_init(void) {
|
||||||
|
cm_init(soundblaster_getSampleRate());
|
||||||
|
soundblaster_init(audio_callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void audio_deinit(void) {
|
||||||
|
soundblaster_deinit();
|
||||||
|
}
|
||||||
7
src/audio.h
Normal file
7
src/audio.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef AUDIO_H
|
||||||
|
#define AUDIO_H
|
||||||
|
|
||||||
|
void audio_init(void);
|
||||||
|
void audio_deinit(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
27
src/main.c
27
src/main.c
@@ -12,23 +12,23 @@
|
|||||||
#include <dos.h>
|
#include <dos.h>
|
||||||
|
|
||||||
#include "lib/dmt/dmt.h"
|
#include "lib/dmt/dmt.h"
|
||||||
#include "lib/cmixer/cmixer.h"
|
|
||||||
#include "vga.h"
|
|
||||||
#include "luaobj.h"
|
#include "luaobj.h"
|
||||||
|
#include "vga.h"
|
||||||
|
#include "audio.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "filesystem.h"
|
#include "filesystem.h"
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "package.h"
|
#include "package.h"
|
||||||
#include "soundblaster.h"
|
|
||||||
|
|
||||||
|
|
||||||
static lua_State *L;
|
static lua_State *L;
|
||||||
|
|
||||||
static void deinit(void) {
|
static void deinit(void) {
|
||||||
/* Deinit and clear up everything. Called at exit */
|
/* Deinit and clear up everything. Called at exit */
|
||||||
soundblaster_deinit();
|
audio_deinit();
|
||||||
vga_deinit();
|
vga_deinit();
|
||||||
keyboard_deinit();
|
keyboard_deinit();
|
||||||
lua_close(L);
|
lua_close(L);
|
||||||
@@ -47,22 +47,6 @@ static int onLuaPanic(lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static short audioBuffer[SOUNDBLASTER_SAMPLES_PER_BUFFER * 2];
|
|
||||||
|
|
||||||
static const short* audioCallback(void) {
|
|
||||||
/* For the moment the soundblaster code expects mono audio while the cmixer
|
|
||||||
** library outputs stereo -- we process to a stereo buffer, then copy the left
|
|
||||||
** channel to the start of the buffer */
|
|
||||||
int i;
|
|
||||||
int len = SOUNDBLASTER_SAMPLES_PER_BUFFER;
|
|
||||||
cm_process(audioBuffer, len * 2);
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
audioBuffer[i] = audioBuffer[i * 2];
|
|
||||||
}
|
|
||||||
return audioBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int luaopen_love(lua_State *L);
|
int luaopen_love(lua_State *L);
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
@@ -74,8 +58,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
/* Init everything */
|
/* Init everything */
|
||||||
atexit(deinit);
|
atexit(deinit);
|
||||||
cm_init(soundblaster_getSampleRate());
|
audio_init();
|
||||||
soundblaster_init(audioCallback);
|
|
||||||
vga_init();
|
vga_init();
|
||||||
palette_init();
|
palette_init();
|
||||||
keyboard_init();
|
keyboard_init();
|
||||||
|
|||||||
Reference in New Issue
Block a user