]> git.proxmox.com Git - qemu.git/blobdiff - hw/adlib.c
Version 1.0.1
[qemu.git] / hw / adlib.c
index 805365e709e5b8861cbbb20be04453f1a81b4920..e4bfcc6420045d61ac79c5129b4784268310f431 100644 (file)
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
-#include <assert.h>
-#include "vl.h"
+
+#include "hw.h"
+#include "audiodev.h"
+#include "audio/audio.h"
+#include "isa.h"
+
+//#define DEBUG
 
 #define ADLIB_KILL_TIMERS 1
 
+#ifdef DEBUG
+#include "qemu-timer.h"
+#endif
+
 #define dolog(...) AUD_log ("adlib", __VA_ARGS__)
 #ifdef DEBUG
 #define ldebug(...) dolog (__VA_ARGS__)
@@ -106,11 +115,10 @@ static void adlib_kill_timers (AdlibState *s)
     }
 }
 
-static IO_WRITE_PROTO(adlib_write)
+static IO_WRITE_PROTO (adlib_write)
 {
     AdlibState *s = opaque;
     int a = nport & 3;
-    int status;
 
     s->active = 1;
     AUD_set_active_out (s->voice, 1);
@@ -118,13 +126,13 @@ static IO_WRITE_PROTO(adlib_write)
     adlib_kill_timers (s);
 
 #ifdef HAS_YMF262
-    status = YMF262Write (0, a, val);
+    YMF262Write (0, a, val);
 #else
-    status = OPLWrite (s->opl, a, val);
+    OPLWrite (s->opl, a, val);
 #endif
 }
 
-static IO_READ_PROTO(adlib_read)
+static IO_READ_PROTO (adlib_read)
 {
     AdlibState *s = opaque;
     uint8_t data;
@@ -156,8 +164,8 @@ static void timer_handler (int c, double interval_Sec)
 
     s->ticking[n] = 1;
 #ifdef DEBUG
-    interval = ticks_per_sec * interval_Sec;
-    exp = qemu_get_clock (vm_clock) + interval;
+    interval = get_ticks_per_sec() * interval_Sec;
+    exp = qemu_get_clock_ns (vm_clock) + interval;
     s->exp[n] = exp;
 #endif
 
@@ -259,7 +267,7 @@ static void Adlib_fini (AdlibState *s)
 #endif
 
     if (s->mixbuf) {
-        qemu_free (s->mixbuf);
+        g_free (s->mixbuf);
     }
 
     s->active = 0;
@@ -267,15 +275,10 @@ static void Adlib_fini (AdlibState *s)
     AUD_remove_card (&s->card);
 }
 
-int Adlib_init (AudioState *audio, qemu_irq *pic)
+int Adlib_init (qemu_irq *pic)
 {
     AdlibState *s = &glob_adlib;
-    audsettings_t as;
-
-    if (!audio) {
-        dolog ("No audio state\n");
-        return -1;
-    }
+    struct audsettings as;
 
 #ifdef HAS_YMF262
     if (YMF262Init (1, 14318180, conf.freq)) {
@@ -303,7 +306,7 @@ int Adlib_init (AudioState *audio, qemu_irq *pic)
     as.fmt = AUD_FMT_S16;
     as.endianness = AUDIO_HOST_ENDIANNESS;
 
-    AUD_register_card (audio, "adlib", &s->card);
+    AUD_register_card ("adlib", &s->card);
 
     s->voice = AUD_open_out (
         &s->card,
@@ -319,14 +322,7 @@ int Adlib_init (AudioState *audio, qemu_irq *pic)
     }
 
     s->samples = AUD_get_buffer_size_out (s->voice) >> SHIFT;
-    s->mixbuf = qemu_mallocz (s->samples << SHIFT);
-
-    if (!s->mixbuf) {
-        dolog ("Could not allocate mixing buffer, %d samples (each %d bytes)\n",
-               s->samples, 1 << SHIFT);
-        Adlib_fini (s);
-        return -1;
-    }
+    s->mixbuf = g_malloc0 (s->samples << SHIFT);
 
     register_ioport_read (0x388, 4, 1, adlib_read, s);
     register_ioport_write (0x388, 4, 1, adlib_write, s);