diff --git a/src/Makefile.mingw b/src/Makefile.mingw deleted file mode 100644 index 858bbd8e8..000000000 --- a/src/Makefile.mingw +++ /dev/null @@ -1,541 +0,0 @@ -# -# 86Box A hypervisor and IBM PC system emulator that specializes in -# running old operating systems and software designed for IBM -# PC systems and compatibles from 1981 through fairly recent -# system designs based on the PCI bus. -# -# This file is part of the 86Box distribution. -# -# Modified Makefile for Win32 (MinGW32) environment. -# -# Version: @(#)Makefile.mingw 1.0.30 2017/06/17 -# -# Authors: Miran Grca, -# Fred N. van Kempen, -# - -# Name of the executable. -ifndef PROG -PROG = 86Box -endif - -# Various compile-time options. -# -DROM_TRACE=0xcd800 traces ROM access from segment C800 -# -DIO_TACE=0x66 traces I/O on port 0x66 -ifndef STUFF -STUFF = -endif - -# Add feature selections here. -# -DANSI_CFG forces the config file to ANSI encoding. -# -DENABLE_VRAM_DUMP enables Video Ram dumping. -# -DENABLE_LOG_BREAKPOINT enables extra logging. -# -DENABLE_BUSLOGIC_LOG enables extra logging. -# -DENABLE_CDROM_LOG enables extra logging. -# -DENABLE_D86F_LOG enables extra logging. -# -DENABLE_FDC_LOG enables extra logging. -# -DENABLE_IDE_LOG enables extra logging. -# -DENABLE_SERIAL_LOG enables extra logging. -# -DENABLE_NIC_LOG enables extra logging. -ifndef EXTRAS -EXTRAS = -endif - -# Defaults for several build options (possibly defined in a chained file.) -ifndef DEBUG -DEBUG = n -endif -ifndef OPTIM -OPTIM = n -endif -ifndef RELEASE -RELEASE = n -endif -ifndef USB -USB = n -endif -ifndef X64 -X64 = n -endif - - -######################################################################### -# Nothing should need changing from here on.. # -######################################################################### -VPATH = . cpu sound sound/munt sound/munt/c_interface sound/munt/sha1 sound/munt/srchelper sound/resid-fp video lzf network network/slirp win -PLAT = win/ -ifeq ($(X64), y) -CPP = g++.exe -m64 -CC = gcc.exe -m64 -else -CPP = g++.exe -m32 -CC = gcc.exe -m32 -endif -WINDRES = windres.exe - -OPTS = -DWIN32 -I$(PLAT) $(EXTRAS) $(STUFF) - -ifeq ($(X64), y) - ifeq ($(OPTIM), y) - DFLAGS = -march=native - else - DFLAGS = - endif -else - ifeq ($(OPTIM), y) - DFLAGS = -march=native - else - DFLAGS = -march=i686 - endif -endif -ifeq ($(DEBUG), y) - DFLAGS += -ggdb -DDEBUG - AOPTIM = - ifndef COPTIM - COPTIM = -Og - endif -else - ifeq ($(OPTIM), y) - AOPTIM = -mtune=native - ifndef COPTIM - COPTIM = -O6 - endif - else - ifndef COPTIM - COPTIM = -O3 - endif - endif -endif -AFLAGS = -msse -msse2 -mfpmath=sse -CFLAGS = $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) $(AFLAGS) \ - -fomit-frame-pointer -mstackrealign -Wall -RFLAGS = --input-format=rc -O coff -ifeq ($(RELEASE), y) -CFLAGS += -DRELEASE_BUILD -RFLAGS += -DRELEASE_BUILD -endif -ifeq ($(VRAMDUMP), y) -CFLAGS += -DENABLE_VRAM_DUMP -RFLAGS += -DENABLE_VRAM_DUMP -endif - -ifeq ($(X64), y) -PLATCG = codegen_x86-64.o -else -PLATCG = codegen_x86.o -endif - - -MAINOBJ = pc.o config.o device.o timer.o dma.o io.o nmi.o pic.o \ - mca.o mcr.o pit.o ppi.o pci.o sio.o intel.o rom.o mem.o \ - memregs.o intel_flash.o rtc.o nvr.o ps2_nvr.o -CPUOBJ = cpu.o 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o \ - codegen.o \ - codegen_ops.o codegen_timing_486.o \ - codegen_timing_686.o codegen_timing_pentium.o \ - codegen_timing_winchip.o $(PLATCG) \ - x86seg.o x87.o -SYSOBJ = model.o \ - headland.o \ - i430hx.o i430lx.o i430fx.o i430nx.o i430vx.o i440fx.o \ - neat.o \ - ali1429.o \ - opti495.o \ - scat.o \ - sis496.o \ - wd76c10.o \ - acer386sx.o acerm3a.o amstrad.o \ - compaq.o laserxt.o jim.o \ - olivetti_m24.o ps1.o ps2.o ps2_mca.o \ - tandy_eeprom.o tandy_rom.o -DEVOBJ = bugger.o lpt.o serial.o \ - fdc37c665.o fdc37c669.o fdc37c932fr.o \ - pc87306.o sis85c471.o w83877f.o \ - keyboard.o \ - keyboard_xt.o keyboard_at.o keyboard_pcjr.o \ - keyboard_amstrad.o keyboard_olim24.o \ - gameport.o \ - joystick_standard.o joystick_ch_flightstick_pro.o \ - joystick_sw_pad.o joystick_tm_fcs.o \ - mouse.o mouse_serial.o mouse_ps2.o mouse_bus.o \ - fdd.o fdc.o fdi2raw.o \ - hdd.o hdd_image.o \ - mfm_at.o mfm_xebec.o hdd_esdi.o ide.o xtide.o piix.o \ - disc.o \ - disc_86f.o disc_fdi.o disc_imd.o disc_img.o \ - disc_random.o disc_td0.o \ - cdrom.o \ - cdrom_dosbox.o cdrom_image.o cdrom_ioctl.o cdrom_null.o -ifdef USB -USBOBJ = usb.o -endif -NETOBJ = network.o \ - net_pcap.o \ - net_slirp.o \ - bootp.o ip_icmp.o misc.o socket.o tcp_timer.o cksum.o \ - ip_input.o queue.o tcp_input.o debug.o ip_output.o \ - sbuf.o tcp_output.o udp.o if.o mbuf.o slirp.o tcp_subr.o \ - net_ne2000.o -SCSIOBJ = scsi.o scsi_disk.o scsi_buslogic.o scsi_aha154x.o -SNDOBJ = sound.o \ - convolve.o convolve-sse.o envelope.o extfilt.o \ - filter.o pot.o sid.o voice.o wave6581__ST.o \ - wave6581_P_T.o wave6581_PS_.o wave6581_PST.o \ - wave8580__ST.o wave8580_P_T.o wave8580_PS_.o \ - wave8580_PST.o wave.o \ - Analog.o BReverbModel.o File.o FileStream.o LA32Ramp.o \ - LA32FloatWaveGenerator.o LA32WaveGenerator.o \ - MidiStreamParser.o Part.o Partial.o PartialManager.o \ - Poly.o ROMInfo.o Synth.o Tables.o TVA.o TVF.o TVP.o \ - sha1.o c_interface.o \ - dbopl.o nukedopl.o openal.o \ - midi.o midi_mt32.o midi_system.o \ - snd_speaker.o snd_ps1.o snd_pssj.o \ - snd_adlib.o snd_adlibgold.o snd_ad1848.o \ - snd_sb.o snd_sb_dsp.o snd_cms.o snd_dbopl.o \ - snd_emu8k.o snd_gus.o snd_opl.o \ - snd_mpu401.o snd_pas16.o snd_resid.o \ - snd_sn76489.o snd_ssi2001.o snd_wss.o \ - snd_ym7128.o -VIDOBJ = video.o \ - vid_cga.o vid_cga_comp.o vid_mda.o \ - vid_ega.o vid_ega_render.o \ - vid_vga.o vid_svga.o vid_svga_render.o \ - vid_hercules.o vid_herculesplus.o vid_incolor.o \ - vid_colorplus.o \ - vid_genius.o \ - vid_s3.o vid_s3_virge.o \ - vid_et4000.o vid_et4000w32.o vid_icd2061.o \ - vid_oti067.o \ - vid_paradise.o \ - vid_tvga.o vid_tgui9440.o vid_tkd8001_ramdac.o \ - vid_ati_eeprom.o vid_ati18800.o vid_ati28800.o \ - vid_ati68860_ramdac.o vid_ati_mach64.o \ - vid_ics2595.o \ - vid_sdac_ramdac.o \ - vid_stg_ramdac.o \ - vid_unk_ramdac.o \ - vid_wy700.o \ - vid_voodoo.o \ - vid_pcjr.o vid_ps1_svga.o \ - vid_olivetti_m24.o \ - vid_pc1512.o vid_pc1640.o vid_pc200.o \ - vid_tandy.o vid_tandysl.o -WINOBJ = win.o \ - win_ddraw.o win_ddraw_fs.o win_ddraw_screenshot.o \ - win_d3d.o win_d3d_fs.o \ - win_language.o win_status.o win_opendir.o win_dynld.o \ - win_video.o win_serial.o win_keyboard.o win_mouse.o \ - win_iodev.o win_joystick.o win_midi.o \ - win_settings.o win_deviceconfig.o win_joystickconfig.o \ - 86Box.res -OBJ = $(MAINOBJ) $(CPUOBJ) $(SYSOBJ) $(DEVOBJ) $(USBOBJ) \ - $(NETOBJ) $(SCSIOBJ) $(SNDOBJ) $(VIDOBJ) $(WINOBJ) - -LZFOBJ = lzf_c.o lzf_d.o - -LIBS = -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 -lopenal.dll \ - -mwindows -lcomctl32 -lwinmm -lwsock32 -liphlpapi -lpsapi \ - -static -static-libgcc -static-libstdc++ -lstdc++ -lgcc - - -# Build rules. -%.o: %.c - @echo $< - @$(CC) $(CFLAGS) -c $< - -%.o: %.cc - @echo $< - @$(CPP) $(CFLAGS) -c $< - -%.o: %.cpp - @echo $< - @$(CPP) $(CFLAGS) -c $< - -all: $(PROG).exe pcap_if.exe - - -$(PROG).exe: $(OBJ) $(LZFOBJ) - @echo Linking $(PROG).exe .. - @$(CC) -o $(PROG).exe $(OBJ) $(LZFOBJ) $(LIBS) -ifneq ($(DEBUG), y) - @strip $(PROG).exe -endif - -pcap_if.exe: pcap_if.o win_dynld.o pcap_if.res - @echo Linking pcap_if.exe .. - @$(CC) -o pcap_if.exe pcap_if.o win_dynld.o pcap_if.res -ifneq ($(DEBUG), y) - @strip pcap_if.exe -endif - - - -clean: - -rm *.o - -rm *.exe - -rm *.res - -86Box.res: 86Box.rc - @echo Processing $< - @$(WINDRES) $(RFLAGS) $(EXTRAS) -i win/86Box.rc -o 86Box.res - -pcap_if.res: pcap_if.rc - @echo Processing $< - @$(WINDRES) $(RFLAGS) -i win/pcap_if.rc -o pcap_if.res - - -# Module dependencies. -acer386sx.o: ibm.h cpu/cpu.h io.h device.h model.h - -acerm3a.o: ibm.h cpu/cpu.h io.h device.h model.h - -ali1429.o: ibm.h cpu/cpu.h io.h mem.h device.h model.h - -amstrad.o: ibm.h cpu/cpu.h io.h device.h model.h keyboard.h lpt.h mouse.h - -bugger.o: ibm.h io.h bugger.h - -cdrom.o: 86box.h cdrom.h ibm.h ide.h piix.h scsi.h timer.h \ - win/plat_iodev.h - -cdrom_ioctl.o: ibm.h cdrom.h cdrom_ioctl.h scsi.h - -cdrom_null.o: ibm.h cdrom.h cdrom_ioctl.h - -compaq.o: ibm.h cpu/cpu.h mem.h device.h model.h - -config.o: cdrom.h config.h device.h disc.h fdc.h fdd.h ibm.h \ - cpu/cpu.h gameport.h ide.h hdd.h model.h mouse.h \ - network/network.h nvr.h scsi.h win/plat_joystick.h \ - win/plat_midi.h sound/snd_dbopl.h sound/snd_mpu401.h \ - sound/snd_opl.h sound/sound.h video/video.h win/win.h \ - win/win_language.h - -device.o: ibm.h cpu/cpu.h config.h device.h model.h sound/sound.h - -disc.o: ibm.h config.h disc.h disc_fdi.h disc_img.h disc_86f.h \ - disc_td0.h disc_imd.h fdc.h fdd.h timer.h - -disc_86f.o: lzf/lzf.h config.h dma.h disc.h disc_86f.h disc_random.h \ - fdc.h fdd.h ibm.h - -disc_fdi.o: ibm.h disc.h disc_img.h disc_fdi.h fdc.h fdd.h fdi2raw.h \ - ibm.h disc.h disc_imd.h fdc.h fdd.h ibm.h config.h disc.h \ - disc_img.h fdc.h fdd.h - -disc_random.o: disc_random.h - -disc_td0.o: ibm.h disc.h disc_td0.h fdc.h fdd.h - -dma.o: ibm.h cpu/x86.h mem.h io.h dma.h - -fdc.o: ibm.h disc.h dma.h fdc.h fdd.h io.h pic.h timer.h - -fdc37c665.o: ibm.h disc.h fdc.h fdd.h ide.h io.h lpt.h serial.h \ - fdc37c665.h ibm.h disc.h fdc.h fdd.h io.h ide.h \ - lpt.h serial.h fdc37c669.h - -fdc37c932fr.o: ibm.h disc.h fdc.h fdd.h ide.h io.h lpt.h serial.h \ - fdc37c932fr.h - -fdd.o: ibm.h disc.h fdc.h fdd.h - -fdi2raw.o: fdi2raw.h ibm.h - -gameport.o: ibm.h cpu/cpu.h device.h io.h timer.h gameport.h \ - joystick_ch_flightstick_pro.h joystick_standard.h \ - joystick_sw_pad.h joystick_tm_fcs.h plat_joystick.h - -hdd.o: ibm.h cpu/cpu.h device.h hdd.h model.h hdd_esdi.h \ - mfm_at.h mfm_xebec.h xtide.h - -hdd_image.o: ibm.h ide.h hdd_image.h - -hdd_esdi.o: ibm.h device.h dma.h hdd_image.h io.h mca.h mem.h \ - pic.h rom.h timer.h hdd_esdi.h - -headland.o: ibm.h cpu/cpu.h io.h mem.h device.h model.h - -i430fx.o: ibm.h cpu/cpu.h mem.h pci.h device.h model.h - -i430hx.o: ibm.h cpu/cpu.h io.h mem.h pci.h device.h model.h - -i430lx.o: ibm.h cpu/cpu.h mem.h pci.h device.h model.h - -i430nx.o: ibm.h cpu/cpu.h mem.h pci.h device.h model.h - -i430vx.o: ibm.h cpu/cpu.h io.h mem.h pci.h device.h model.h - -i440fx.o: ibm.h cpu/cpu.h io.h mem.h pci.h device.h model.h - -i82335.o: ibm.h io.h mem.h - -ide.o: 86box.h cdrom.h hdd_image.h ibm.h io.h pic.h timer.h cdrom.h scsi.h ide.h - -intel.o: ibm.h cpu/cpu.h io.h mem.h pit.h timer.h intel.h - -intel_flash.o: ibm.h cpu/cpu.h device.h mem.h model.h rom.h - -io.o: ibm.h io.h - -jim.o: ibm.h cpu/cpu.h io.h device.h model.h - -joystick_ch_flightstick_pro.o: ibm.h device.h timer.h gameport.h \ - joystick_standard.h plat_joystick.h - -joystick_standard.o: ibm.h device.h timer.h gameport.h \ - joystick_standard.h plat_joystick.h - -joystick_sw_pad.o: ibm.h device.h timer.h gameport.h \ - joystick_sw_pad.h plat_joystick.h - -joystick_tm_fcs.o: ibm.h device.h timer.h gameport.h \ - joystick_standard.h plat_joystick.h - -keyboard.o: ibm.h plat_keyboard.h keyboard.h - -keyboard_amstrad.o: ibm.h io.h mem.h pic.h pit.h timer.h sound/sound.h \ - sound/snd_speaker.h keyboard.h keyboard_amstrad.h - -keyboard_at.o: ibm.h io.h mem.h pic.h pit.h timer.h disc.h fdc.h \ - sound/sound.h sound/snd_speaker.h keyboard.h keyboard_at.h - -keyboard_olim24.o: ibm.h io.h mem.h pic.h pit.h timer.h mouse.h \ - sound/sound.h sound/snd_speaker.h keyboard.h keyboard_olim24.h - -keyboard_pcjr.o: ibm.h io.h mem.h nmi.h pic.h pit.h timer.h \ - device.h sound/sound.h sound/snd_speaker.h \ - sound/snd_sn76489.h keyboard.h keyboard_pcjr.h - -keyboard_xt.o: ibm.h io.h mem.h pic.h pit.h timer.h device.h tandy_eeprom.h \ - sound/sound.h sound/snd_speaker.h keyboard.h keyboard_xt.h - -laserxt.o: ibm.h cpu/cpu.h io.h mem.h device.h model.h - -lpt.o: ibm.h io.h lpt.h - -mca.o: ibm.h io.h mem.h mca.h - -mcr.o: ibm.h - -mem.o: ibm.h cpu/cpu.h cpu/x86_ops.h cpu/x86.h config.h \ - io.h mem.h rom.h cpu/codegen.h video/video.h - -memregs.o: ibm.h io.h memregs.h - -mfm_at.o: ibm.h device.h hdd_image.h io.h pic.h timer.h mfm_at.h - -mfm_xebec.o: ibm.h device.h dma.h hdd_image.h io.h mem.h pic.h rom.h timer.h mfm_xebec.h - -model.o: ibm.h io.h mem.h rom.h device.h model.h cpu/cpu.h \ - mouse.h mouse_ps2.h cdrom.h disc.h dma.h fdc.h \ - fdc37c665.h fdc37c669.h fdc37c932fr.h \ - gameport.h i82335.h ide.h intel.h intel_flash.h \ - keyboard_amstrad.h keyboard_at.h keyboard_olim24.h \ - keyboard_pcjr.h keyboard_xt.h lpt.h mem.h memregs.h \ - nmi.h nvr.h pc87306.h pci.h pic.h piix.h pit.h ps2_mca.h \ - serial.h sis85c471.h sio.h sound/snd_ps1.h sound/snd_pssj.h \ - sound/snd_sn76489.h tandy_eeprom.h tandy_rom.h \ - video/vid_pcjr.h video/vid_tandy.h w83877f.h wd76c10.h \ - xtide.h bugger.h - -mouse.o: ibm.h cpu/cpu.h device.h model.h \ - mouse.h mouse_serial.h mouse_ps2.h mouse_bus.h keyboard_olim24.h - -mouse_bus.o: ibm.h io.h pic.h mouse.h mouse_bus.h plat_mouse.h - -mouse_ps2.o: ibm.h keyboard_at.h mouse.h mouse_ps2.h plat_mouse.h - -mouse_serial.o: ibm.h timer.h serial.h mouse.h mouse_serial.h - -neat.o: ibm.h cpu/cpu.h io.h device.h model.h - -nmi.o: ibm.h io.h nmi.h - -nvr.o: ibm.h cpu/cpu.h device.h io.h mem.h model.h nvr.h \ - pic.h rom.h timer.h rtc.h - -olivetti_m24.o: ibm.h cpu/cpu.h io.h device.h model.h - -opti495.o: ibm.h cpu/cpu.h io.h mem.h device.h model.h - -pc.o: 86box.h ibm.h mem.h cpu/cpu.h cpu/x86_ops.h cpu/codegen.h \ - dma.h nvr.h pic.h pit.h timer.h device.h model.h disc.h \ - disc_86f.h disc_fdi.h disc_imd.h disc_img.h disc_td0.h \ - disc_random.h config.h fdc.h fdd.h gameport.h plat_joystick.h \ - plat_midi.h hdd.h ide.h cdrom.h cdrom_ioctl.h cdrom_image.h \ - cdrom_null.h scsi.h keyboard.h plat_keyboard.h keyboard_at.h \ - mouse.h plat_mouse.h network/network.h serial.h \ - sound/sound.h sound/snd_cms.h sound/snd_dbopl.h \ - sound/snd_mpu401.h sound/snd_opl.h sound/snd_gus.h \ - sound/snd_sb.h sound/snd_speaker.h sound/snd_ssi2001.h \ - video/video.h video/vid_voodoo.h win/plat_ui.h - -pc87306.o: ibm.h disc.h fdc.h fdd.h ide.h io.h lpt.h serial.h pc87306.h - -pci.o: ibm.h io.h mem.h pic.h pci.h - -pic.o: ibm.h io.h pic.h pit.h - -piix.o: ibm.h dma.h ide.h io.h mem.h pci.h piix.h - -pit.o: ibm.h cpu/cpu.h dma.h io.h pic.h pit.h device.h timer.h \ - model.h sound/snd_speaker.h video/video.h - -ppi.o: ibm.h pit.h plat_keyboard.h plat_mouse.h - -ps1.o: ibm.h cpu/cpu.h io.h mem.h rom.h device.h model.h lpt.h serial.h - -ps2.o: ibm.h cpu/cpu.h io.h mem.h rom.h device.h model.h lpt.h serial.h - -ps2_mca.o: ibm.h cpu/cpu.h cpu/x86.h io.h mca.h mem.h rom.h device.h \ - lpt.h ps2_mca.h ps2_nvr.h serial.h - -ps2_nvr.o: ibm.h device.h io.h mem.h rom.h ps2_nvr.h - -rom.o: config.h ibm.h mem.h rom.h - -rtc.o: nvr.h rtc.h - -scat.o: ibm.h cpu/cpu.h io.h mem.h device.h model.h - -scsi.o: 86box.h ibm.h timer.h device.h cdrom.h scsi.h \ - scsi_aha154x.h scsi_buslogic.h - -scsi_aha154x.o: ibm.h io.h mca.h mem.h mca.h rom.h dma.h pic.h timer.h \ - device.h cdrom.h scsi.h scsi_disk.h scsi_aha154x.h \ - -scsi_buslogic.o: ibm.h io.h mem.h rom.h dma.h pic.h pci.h timer.h \ - device.h scsi.h scsi_disk.h cdrom.h scsi_buslogic.h - -scsi_disk.o: 86box.h cdrom.h hdd_image.h ibm.h ide.h piix.h scsi.h \ - scsi_disk.h timer.h win/plat_iodev.h - -serial.o: ibm.h io.h pic.h timer.h serial.h plat_serial.h - -sio.o: ibm.h cdrom.h disc.h dma.h fdc.h keyboard_at.h ide.h \ - io.h mem.h pci.h sio.h - -sis496.o: ibm.h cpu/cpu.h io.h mem.h pci.h device.h model.h - -sis50x.o: ibm.h device.h io.h mem.h pci.h sis50x.h - -sis85c471.o: ibm.h ide.h disc.h fdc.h fdd.h io.h lpt.h serial.h sis85c471.h - -tandy_eeprom.o: ibm.h device.h mem.h io.h rom.h tandy_eeprom.h - -tandy_rom.o: ibm.h device.h io.h mem.h rom.h tandy_rom.h - -timer.o: ibm.h timer.h - -usb.o: ibm.h io.h mem.h usb.h - -w83877f.o: ibm.h disc.h fdc.h fdd.h io.h lpt.h serial.h w83877f.h - -wd76c10.o: ibm.h disc.h fdc.h io.h mem.h serial.h wd76c10.h - -xtide.o: ibm.h io.h mem.h rom.h device.h ide.h xtide.h - - -# End of Makefile.mingw. diff --git a/src/SOUND/openal.c b/src/SOUND/openal.c deleted file mode 100644 index 4265f44ca..000000000 --- a/src/SOUND/openal.c +++ /dev/null @@ -1,229 +0,0 @@ -#define USE_OPENAL -#include -#include -#include -#ifdef USE_OPENAL -# include -# include -# include -#endif -#include "../ibm.h" -#include "sound.h" - - -FILE *allog; -#ifdef USE_OPENAL -ALuint buffers[4]; /* front and back buffers */ -ALuint buffers_cd[4]; /* front and back buffers */ -ALuint buffers_midi[4]; /* front and back buffers */ -static ALuint source[3]; /* audio source */ -#endif -#define FREQ 48000 -#define BUFLEN SOUNDBUFLEN - - -static int midi_freq = 44100; -static int midi_buf_size = 4410; -static int initialized = 0; - -void al_set_midi(int freq, int buf_size) -{ - midi_freq = freq; - midi_buf_size = buf_size; -} - -void closeal(void); -ALvoid alutInit(ALint *argc,ALbyte **argv) -{ - ALCcontext *Context; - ALCdevice *Device; - - /* Open device */ - Device=alcOpenDevice((ALCchar *)""); - /* Create context(s) */ - Context=alcCreateContext(Device,NULL); - /* Set active context */ - alcMakeContextCurrent(Context); - /* Register extensions */ -} - -ALvoid alutExit(ALvoid) -{ - ALCcontext *Context; - ALCdevice *Device; - - /* Unregister extensions */ - - /* Get active context */ - Context=alcGetCurrentContext(); - /* Get device for active context */ - Device=alcGetContextsDevice(Context); - /* Disable context */ - alcMakeContextCurrent(NULL); - /* Release context(s) */ - alcDestroyContext(Context); - /* Close device */ - alcCloseDevice(Device); -} -void initalmain(int argc, char *argv[]) -{ -#ifdef USE_OPENAL - alutInit(0,0); - atexit(closeal); -#endif -} - -void closeal(void) -{ - if (!initialized) return; -#ifdef USE_OPENAL - alutExit(); -#endif - initialized = 0; -} - -void inital(ALvoid) -{ - if (initialized) return; - -#ifdef USE_OPENAL - int c; - - float *buf = NULL, *cd_buf = NULL, *midi_buf = NULL; - int16_t *buf_int16 = NULL, *cd_buf_int16 = NULL, *midi_buf_int16 = NULL; - - if (sound_is_float) - { - buf = (float *) malloc((BUFLEN << 1) * sizeof(float)); - cd_buf = (float *) malloc((CD_BUFLEN << 1) * sizeof(float)); - midi_buf = (float *) malloc(midi_buf_size * sizeof(float)); - } - else - { - buf_int16 = (int16_t *) malloc((BUFLEN << 1) * sizeof(int16_t)); - cd_buf_int16 = (int16_t *) malloc((CD_BUFLEN << 1) * sizeof(int16_t)); - midi_buf_int16 = (int16_t *) malloc(midi_buf_size * sizeof(int16_t)); - } - - alGenBuffers(4, buffers); - alGenBuffers(4, buffers_cd); - alGenBuffers(4, buffers_midi); - - alGenSources(3, source); - - alSource3f(source[0], AL_POSITION, 0.0, 0.0, 0.0); - alSource3f(source[0], AL_VELOCITY, 0.0, 0.0, 0.0); - alSource3f(source[0], AL_DIRECTION, 0.0, 0.0, 0.0); - alSourcef (source[0], AL_ROLLOFF_FACTOR, 0.0 ); - alSourcei (source[0], AL_SOURCE_RELATIVE, AL_TRUE ); - alSource3f(source[1], AL_POSITION, 0.0, 0.0, 0.0); - alSource3f(source[1], AL_VELOCITY, 0.0, 0.0, 0.0); - alSource3f(source[1], AL_DIRECTION, 0.0, 0.0, 0.0); - alSourcef (source[1], AL_ROLLOFF_FACTOR, 0.0 ); - alSourcei (source[1], AL_SOURCE_RELATIVE, AL_TRUE ); - alSource3f(source[2], AL_POSITION, 0.0, 0.0, 0.0); - alSource3f(source[2], AL_VELOCITY, 0.0, 0.0, 0.0); - alSource3f(source[2], AL_DIRECTION, 0.0, 0.0, 0.0); - alSourcef (source[2], AL_ROLLOFF_FACTOR, 0.0 ); - alSourcei (source[2], AL_SOURCE_RELATIVE, AL_TRUE ); - - if (sound_is_float) - { - memset(buf,0,BUFLEN*2*sizeof(float)); - memset(cd_buf,0,BUFLEN*2*sizeof(float)); - memset(midi_buf,0,midi_buf_size*sizeof(float)); - } - else - { - memset(buf_int16,0,BUFLEN*2*sizeof(int16_t)); - memset(cd_buf_int16,0,BUFLEN*2*sizeof(int16_t)); - memset(midi_buf_int16,0,midi_buf_size*sizeof(int16_t)); - } - - for (c = 0; c < 4; c++) - { - if (sound_is_float) - { - alBufferData(buffers[c], AL_FORMAT_STEREO_FLOAT32, buf, BUFLEN*2*sizeof(float), FREQ); - alBufferData(buffers_cd[c], AL_FORMAT_STEREO_FLOAT32, cd_buf, CD_BUFLEN*2*sizeof(float), CD_FREQ); - alBufferData(buffers_midi[c], AL_FORMAT_STEREO_FLOAT32, midi_buf, midi_buf_size*sizeof(float), midi_freq); - } - else - { - alBufferData(buffers[c], AL_FORMAT_STEREO16, buf_int16, BUFLEN*2*sizeof(int16_t), FREQ); - alBufferData(buffers_cd[c], AL_FORMAT_STEREO16, cd_buf_int16, CD_BUFLEN*2*sizeof(int16_t), CD_FREQ); - alBufferData(buffers_midi[c], AL_FORMAT_STEREO16, midi_buf_int16, midi_buf_size*sizeof(int16_t), midi_freq); - } - } - - alSourceQueueBuffers(source[0], 4, buffers); - alSourceQueueBuffers(source[1], 4, buffers_cd); - alSourceQueueBuffers(source[2], 4, buffers_midi); - alSourcePlay(source[0]); - alSourcePlay(source[1]); - alSourcePlay(source[2]); - - if (sound_is_float) - { - free(midi_buf); - free(cd_buf); - free(buf); - } - else - { - free(midi_buf_int16); - free(cd_buf_int16); - free(buf_int16); - } - - initialized = 1; -#endif -} - -void givealbuffer_common(void *buf, uint8_t src, int size, int freq) -{ -#ifdef USE_OPENAL - int processed; - int state; - ALuint buffer; - - alGetSourcei(source[src], AL_SOURCE_STATE, &state); - - if (state==0x1014) - { - alSourcePlay(source[src]); - } - alGetSourcei(source[src], AL_BUFFERS_PROCESSED, &processed); - - if (processed>=1) - { - alSourceUnqueueBuffers(source[src], 1, &buffer); - - if (sound_is_float) - { - alBufferData(buffer, AL_FORMAT_STEREO_FLOAT32, buf, size * sizeof(float), freq); - } - else - { - alBufferData(buffer, AL_FORMAT_STEREO16, buf, size * sizeof(int16_t), freq); - } - - alSourceQueueBuffers(source[src], 1, &buffer); - } -#endif -} - -void givealbuffer(void *buf) -{ - givealbuffer_common(buf, 0, BUFLEN << 1, FREQ); -} - -void givealbuffer_cd(void *buf) -{ - givealbuffer_common(buf, 1, CD_BUFLEN << 1, CD_FREQ); -} - -void givealbuffer_midi(void *buf, uint32_t size) -{ - givealbuffer_common(buf, 2, size, midi_freq); -}