mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-11-26 10:49:21 +00:00
- fixes to audio_oss_esd.cpp from Alexander R. Pruss (8-bit mode)
- added configuration summary to configure script - prefs_editor_amiga.cpp: output of SCSI prefs was broken
This commit is contained in:
parent
04199a0f56
commit
d42b29ae5d
@ -1,10 +1,19 @@
|
|||||||
V0.8 -
|
V0.8 -
|
||||||
|
- added replacement for BlockMove() trap
|
||||||
|
- removed Windows sources from the source archive; a version of
|
||||||
|
these that actually compiles and works can be downloaded from
|
||||||
|
Lauri Pesonen's site
|
||||||
- medium removal is allowed in CDROMExit()
|
- medium removal is allowed in CDROMExit()
|
||||||
- Unix: added support for ESD audio output; merged with OSS audio
|
- Unix: added support for ESD audio output; merged with OSS audio
|
||||||
and put in a new "audio_oss_esd.cpp" file which is also used under
|
and put in a new "audio_oss_esd.cpp" file which is also used under
|
||||||
FreeBSD 3.x
|
FreeBSD 3.x
|
||||||
- Unix: added mkinstalldirs to "make install" target
|
- Unix: added mkinstalldirs to "make install" target
|
||||||
- Unix: cleaned up the configure script
|
- Unix: cleaned up the configure script
|
||||||
|
- Unix/audio_oss_esd.cpp: AudioStatus is re-set after determining
|
||||||
|
audio device capabilities (actual sample rate is also determined)
|
||||||
|
[Alexander R. Pruss]
|
||||||
|
- Unix/audio_oss_esd.cpp: "silence" in 8-bit mode used wrong fill
|
||||||
|
value (0 instead of 0x80) [Alexander R. Pruss]
|
||||||
|
|
||||||
V0.8 (snapshot) - 21.Oct.1999
|
V0.8 (snapshot) - 21.Oct.1999
|
||||||
- sony.cpp/disk.cpp/cdrom.cpp: disk insertions are now checked for
|
- sony.cpp/disk.cpp/cdrom.cpp: disk insertions are now checked for
|
||||||
|
@ -1071,7 +1071,7 @@ static void read_scsi_settings(void)
|
|||||||
|
|
||||||
if (strlen(scsi_dev[i])) {
|
if (strlen(scsi_dev[i])) {
|
||||||
char str[256];
|
char str[256];
|
||||||
sprintf("%s/%ld", scsi_dev[i], scsi_unit[i]);
|
sprintf(str, "%s/%ld", scsi_dev[i], scsi_unit[i]);
|
||||||
PrefsReplaceString(prefs_name, str);
|
PrefsReplaceString(prefs_name, str);
|
||||||
} else
|
} else
|
||||||
PrefsRemoveItem(prefs_name);
|
PrefsRemoveItem(prefs_name);
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
|
||||||
// Supported sample rates, sizes and channels
|
// Supported sample rates, sizes and channels (defaults)
|
||||||
int audio_num_sample_rates = 1;
|
int audio_num_sample_rates = 1;
|
||||||
uint32 audio_sample_rates[] = {44100 << 16};
|
uint32 audio_sample_rates[] = {44100 << 16};
|
||||||
int audio_num_sample_sizes = 1;
|
int audio_num_sample_sizes = 1;
|
||||||
@ -67,6 +67,7 @@ static sem_t audio_irq_done_sem; // Signal from interrupt to streaming threa
|
|||||||
static bool sem_inited = false; // Flag: audio_irq_done_sem initialized
|
static bool sem_inited = false; // Flag: audio_irq_done_sem initialized
|
||||||
static int sound_buffer_size; // Size of sound buffer in bytes
|
static int sound_buffer_size; // Size of sound buffer in bytes
|
||||||
static bool little_endian = false; // Flag: DSP accepts only little-endian 16-bit sound data
|
static bool little_endian = false; // Flag: DSP accepts only little-endian 16-bit sound data
|
||||||
|
static uint8 silence_byte; // Byte value to use to fill sound buffers with silence
|
||||||
static pthread_t stream_thread; // Audio streaming thread
|
static pthread_t stream_thread; // Audio streaming thread
|
||||||
static pthread_attr_t stream_thread_attr; // Streaming thread attributes
|
static pthread_attr_t stream_thread_attr; // Streaming thread attributes
|
||||||
static bool stream_thread_active = false; // Flag: streaming thread installed
|
static bool stream_thread_active = false; // Flag: streaming thread installed
|
||||||
@ -80,6 +81,14 @@ static void *stream_func(void *arg);
|
|||||||
* Initialization
|
* Initialization
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Set AudioStatus to reflect current audio stream format
|
||||||
|
static void set_audio_status_format(void)
|
||||||
|
{
|
||||||
|
AudioStatus.sample_rate = audio_sample_rates[0];
|
||||||
|
AudioStatus.sample_size = audio_sample_sizes[0];
|
||||||
|
AudioStatus.channels = audio_channel_counts[0];
|
||||||
|
}
|
||||||
|
|
||||||
// Init using /dev/dsp, returns false on error
|
// Init using /dev/dsp, returns false on error
|
||||||
bool audio_init_dsp(void)
|
bool audio_init_dsp(void)
|
||||||
{
|
{
|
||||||
@ -94,22 +103,30 @@ bool audio_init_dsp(void)
|
|||||||
audio_fd = -1;
|
audio_fd = -1;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (format & (AFMT_S16_BE | AFMT_S16_LE))
|
if (format & (AFMT_S16_BE | AFMT_S16_LE)) {
|
||||||
audio_sample_sizes[0] = 16;
|
audio_sample_sizes[0] = 16;
|
||||||
else
|
silence_byte = 0;
|
||||||
|
} else {
|
||||||
audio_sample_sizes[0] = 8;
|
audio_sample_sizes[0] = 8;
|
||||||
|
silence_byte = 0x80;
|
||||||
|
}
|
||||||
if (!(format & AFMT_S16_BE))
|
if (!(format & AFMT_S16_BE))
|
||||||
little_endian = true;
|
little_endian = true;
|
||||||
|
|
||||||
// Set DSP parameters
|
// Set DSP parameters
|
||||||
format = AudioStatus.sample_size == 8 ? AFMT_U8 : (little_endian ? AFMT_S16_LE : AFMT_S16_BE);
|
format = audio_sample_sizes[0] == 8 ? AFMT_U8 : (little_endian ? AFMT_S16_LE : AFMT_S16_BE);
|
||||||
ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format);
|
ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format);
|
||||||
int frag = 0x0004000c; // Block size: 4096 frames
|
int frag = 0x0004000c; // Block size: 4096 frames
|
||||||
ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &frag);
|
ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &frag);
|
||||||
int stereo = (AudioStatus.channels == 2);
|
int stereo = (audio_channel_counts[0] == 2);
|
||||||
ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo);
|
ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo);
|
||||||
int rate = AudioStatus.sample_rate >> 16;
|
int rate = audio_sample_rates[0] >> 16;
|
||||||
ioctl(audio_fd, SNDCTL_DSP_SPEED, &rate);
|
ioctl(audio_fd, SNDCTL_DSP_SPEED, &rate);
|
||||||
|
audio_sample_rates[0] = rate << 16;
|
||||||
|
|
||||||
|
// Set AudioStatus again because we now know more about the sound
|
||||||
|
// system's capabilities
|
||||||
|
set_audio_status_format();
|
||||||
|
|
||||||
// Get sound buffer size
|
// Get sound buffer size
|
||||||
ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &audio_frames_per_block);
|
ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &audio_frames_per_block);
|
||||||
@ -140,6 +157,7 @@ bool audio_init_esd(void)
|
|||||||
#else
|
#else
|
||||||
little_endian = true;
|
little_endian = true;
|
||||||
#endif
|
#endif
|
||||||
|
silence_byte = 0; // Is this correct for 8-bit mode?
|
||||||
|
|
||||||
// Open connection to ESD server
|
// Open connection to ESD server
|
||||||
audio_fd = esd_play_stream(format, AudioStatus.sample_rate >> 16, NULL, NULL);
|
audio_fd = esd_play_stream(format, AudioStatus.sample_rate >> 16, NULL, NULL);
|
||||||
@ -165,9 +183,7 @@ void AudioInit(void)
|
|||||||
char str[256];
|
char str[256];
|
||||||
|
|
||||||
// Init audio status (defaults) and feature flags
|
// Init audio status (defaults) and feature flags
|
||||||
AudioStatus.sample_rate = audio_sample_rates[0];
|
set_audio_status_format();
|
||||||
AudioStatus.sample_size = audio_sample_sizes[0];
|
|
||||||
AudioStatus.channels = audio_channel_counts[0];
|
|
||||||
AudioStatus.mixer = 0;
|
AudioStatus.mixer = 0;
|
||||||
AudioStatus.num_sources = 0;
|
AudioStatus.num_sources = 0;
|
||||||
audio_component_flags = cmpWantsRegisterMessage | kStereoOut | k16BitOut;
|
audio_component_flags = cmpWantsRegisterMessage | kStereoOut | k16BitOut;
|
||||||
@ -277,7 +293,7 @@ static void *stream_func(void *arg)
|
|||||||
{
|
{
|
||||||
int16 *silent_buffer = new int16[sound_buffer_size / 2];
|
int16 *silent_buffer = new int16[sound_buffer_size / 2];
|
||||||
int16 *last_buffer = new int16[sound_buffer_size / 2];
|
int16 *last_buffer = new int16[sound_buffer_size / 2];
|
||||||
memset(silent_buffer, 0, sound_buffer_size);
|
memset(silent_buffer, silence_byte, sound_buffer_size);
|
||||||
|
|
||||||
while (!stream_thread_cancel) {
|
while (!stream_thread_cancel) {
|
||||||
if (AudioStatus.num_sources) {
|
if (AudioStatus.num_sources) {
|
||||||
@ -311,7 +327,7 @@ static void *stream_func(void *arg)
|
|||||||
last_buffer[i] = ntohs(p[i]);
|
last_buffer[i] = ntohs(p[i]);
|
||||||
} else
|
} else
|
||||||
memcpy(last_buffer, Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)), work_size);
|
memcpy(last_buffer, Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)), work_size);
|
||||||
memset((uint8 *)last_buffer + work_size, 0, sound_buffer_size - work_size);
|
memset((uint8 *)last_buffer + work_size, silence_byte, sound_buffer_size - work_size);
|
||||||
write(audio_fd, last_buffer, sound_buffer_size);
|
write(audio_fd, last_buffer, sound_buffer_size);
|
||||||
}
|
}
|
||||||
D(bug("stream: data written\n"));
|
D(bug("stream: data written\n"));
|
||||||
|
387
BasiliskII/src/Unix/configure
vendored
387
BasiliskII/src/Unix/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -6,14 +6,10 @@ AC_PREREQ(2.12)
|
|||||||
AC_CONFIG_HEADER(config.h)
|
AC_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
dnl Options.
|
dnl Options.
|
||||||
WANT_XF86_DGA=yes
|
AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes])
|
||||||
WANT_FBDEV_DGA=yes
|
AC_ARG_ENABLE(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb [default=yes]], [WANT_FBDEV_DGA=$enableval], [WANT_FBDEV_DGA=yes])
|
||||||
WANT_ESD=yes
|
AC_ARG_ENABLE(esd, [ --enable-esd Enlightened Sound Daemon support [default=yes]], [WANT_ESD=$enableval], [WANT_ESD=yes])
|
||||||
WANT_UI=yes
|
AC_ARG_ENABLE(ui, [ --enable-ui use GTK user interface [default=yes]], [WANT_UI=$enableval], [WANT_UI=yes])
|
||||||
AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [])
|
|
||||||
AC_ARG_ENABLE(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb [default=yes]], [WANT_FBDEV_DGA=$enableval], [])
|
|
||||||
AC_ARG_ENABLE(esd, [ --enable-esd Enlightened Sound Daemon support [default=yes]], [WANT_ESD=$enableval], [])
|
|
||||||
AC_ARG_ENABLE(ui, [ --enable-ui use GTK user interface [default=yes]], [WANT_UI=$enableval], [])
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
dnl Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
@ -27,11 +23,13 @@ MONSRCS=
|
|||||||
AC_MSG_CHECKING(for mon)
|
AC_MSG_CHECKING(for mon)
|
||||||
if grep mon_init ../../../mon/src/mon.h >/dev/null 2>/dev/null; then
|
if grep mon_init ../../../mon/src/mon.h >/dev/null 2>/dev/null; then
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
|
WANT_MON=yes
|
||||||
DEFINES="$DEFINES -DENABLE_MON=1"
|
DEFINES="$DEFINES -DENABLE_MON=1"
|
||||||
MONSRCS="../../../mon/src/mon.cpp ../../../mon/src/mon_6502.cpp ../../../mon/src/mon_68k.cpp ../../../mon/src/mon_8080.cpp ../../../mon/src/mon_cmd.cpp ../../../mon/src/mon_ppc.cpp ../../../mon/src/mon_x86.cpp"
|
MONSRCS="../../../mon/src/mon.cpp ../../../mon/src/mon_6502.cpp ../../../mon/src/mon_68k.cpp ../../../mon/src/mon_8080.cpp ../../../mon/src/mon_cmd.cpp ../../../mon/src/mon_ppc.cpp ../../../mon/src/mon_x86.cpp"
|
||||||
CXXFLAGS="$CXXFLAGS -I../../../mon/src"
|
CXXFLAGS="$CXXFLAGS -I../../../mon/src"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
|
WANT_MON=no
|
||||||
DEFINES="$DEFINES -DENABLE_MON=0"
|
DEFINES="$DEFINES -DENABLE_MON=0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -237,11 +235,15 @@ if [[ "x$HAVE_GCC27" = "xyes" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Select appropriate CPU source and REGPARAM define.
|
dnl Select appropriate CPU source and REGPARAM define.
|
||||||
|
WANT_X86_ASSEMBLY=no
|
||||||
|
WANT_SPARC_V8_ASSEMBLY=no
|
||||||
|
WANT_SPARC_V9_ASSEMBLY=no
|
||||||
CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
|
CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
|
||||||
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
|
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
|
||||||
dnl i386 CPU
|
dnl i386 CPU
|
||||||
DEFINES="$DEFINES -DREGPARAM=\"__attribute__((regparm(3)))\""
|
DEFINES="$DEFINES -DREGPARAM=\"__attribute__((regparm(3)))\""
|
||||||
if [[ "x$HAVE_GAS" = "xyes" ]]; then
|
if [[ "x$HAVE_GAS" = "xyes" ]]; then
|
||||||
|
WANT_X86_ASSEMBLY=yes
|
||||||
DEFINES="$DEFINES -DX86_ASSEMBLY"
|
DEFINES="$DEFINES -DX86_ASSEMBLY"
|
||||||
CPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s"
|
CPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s"
|
||||||
fi
|
fi
|
||||||
@ -254,11 +256,13 @@ elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xy
|
|||||||
AC_MSG_RESULT($SPARC_TYPE)
|
AC_MSG_RESULT($SPARC_TYPE)
|
||||||
case "$SPARC_TYPE" in
|
case "$SPARC_TYPE" in
|
||||||
SPARC_V8)
|
SPARC_V8)
|
||||||
|
WANT_SPARC_V8_ASSEMBLY=yes
|
||||||
DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY"
|
DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY"
|
||||||
CFLAGS="$CFLAGS -Wa,-Av8"
|
CFLAGS="$CFLAGS -Wa,-Av8"
|
||||||
CXXFLAGS="$CXXFLAGS -Wa,-Av8"
|
CXXFLAGS="$CXXFLAGS -Wa,-Av8"
|
||||||
;;
|
;;
|
||||||
SPARC_V9)
|
SPARC_V9)
|
||||||
|
WANT_SPARC_V9_ASSEMBLY=yes
|
||||||
DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY"
|
DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY"
|
||||||
CFLAGS="$CFLAGS -Wa,-Av9"
|
CFLAGS="$CFLAGS -Wa,-Av9"
|
||||||
CXXFLAGS="$CXXFLAGS -Wa,-Av9"
|
CXXFLAGS="$CXXFLAGS -Wa,-Av9"
|
||||||
@ -278,4 +282,18 @@ AC_SUBST(SYSSRCS)
|
|||||||
AC_SUBST(CPUINCLUDES)
|
AC_SUBST(CPUINCLUDES)
|
||||||
AC_SUBST(CPUSRCS)
|
AC_SUBST(CPUSRCS)
|
||||||
AC_OUTPUT(Makefile)
|
AC_OUTPUT(Makefile)
|
||||||
|
|
||||||
|
dnl Print summary.
|
||||||
|
echo
|
||||||
|
echo Basilisk II configuration summary:
|
||||||
|
echo
|
||||||
|
echo XFree86 DGA support .............. : $WANT_XF86_DGA
|
||||||
|
echo fbdev DGA support ................ : $WANT_FBDEV_DGA
|
||||||
|
echo ESD sound support ................ : $WANT_ESD
|
||||||
|
echo GTK user interface ............... : $WANT_UI
|
||||||
|
echo mon debugger support ............. : $WANT_MON
|
||||||
|
echo i386 assembly optimizations ...... : $WANT_X86_ASSEMBLY
|
||||||
|
echo SPARC V8 assembly optimizations .. : $WANT_SPARC_V8_ASSEMBLY
|
||||||
|
echo SPARC V9 assembly optimizations .. : $WANT_SPARC_V9_ASSEMBLY
|
||||||
|
echo
|
||||||
echo "Configuration done. Now type \"make\"."
|
echo "Configuration done. Now type \"make\"."
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include "prefs.h"
|
#include "prefs.h"
|
||||||
#include "rom_patches.h"
|
#include "rom_patches.h"
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 0
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
#include "prefs.h"
|
#include "prefs.h"
|
||||||
#include "sony.h"
|
#include "sony.h"
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 0
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#ifdef AMIGA
|
#ifdef AMIGA
|
||||||
|
Loading…
Reference in New Issue
Block a user