Re: Source release [Re: SFX Expander programming and VICE]

From: Gábor Lénárt <>
Date: Wed, 25 Jan 2012 15:58:24 +0100
Message-ID: <>

On Wed, Jan 25, 2012 at 06:37:34AM -0800, andym00 wrote:
> > Sound Expander in WinVice 2.2 seems to work fine.
> > 
> > More SFX Sound Expander stuff, cool, what are you working on Andy?
> > 
> Ah, okay, I'll give 2.2 a go then.. Thanks..
> As for what I'm working on, just really ideas at the moment.. I've always
> wanted to play with the thing and was curious if it was possible to push the
> timing requirements down a bit, or maybe use a timer based approach to avoid
> wasting loads of time waiting to send registers, or even piggy back
> register

What do you mean? The needed time to wait before you can write a register?
With the OPL chip, you had to wait a bit after you selected the register and
before write the actual data and some wait too before you can address
another register. The needed time for this is quite low, before data/after
register select is something like four NOPs, so I wouldn't think it's worth
using timers to wait etc :) There is a bit more delay needed after writing
the data (and using another register) in my player code it's not a problem,
since it's far enough delay given by the player code itself :)

Given by microseconds from the AdLib specification (so it's about the OPL2 -
YM3812 - chip, I am not sure the very same is true for the YM3526 which is
the one the cartridge is equipped with, however it seems some people
upgraded the chip since it's backward compatible):

 The AdLib manual gives the wait times in microseconds: three point three
 (3.3) microseconds for the address, and twenty-three (23) microseconds
 for the data.

Given by the ~1MHz clock of the 6510 in C64, it's about 4 cycles to wait
after specifying the address (register selection) and 23 cycles after the
data. I am not sure why it's told (by more clever people than me) that 4
NOPs is needed, as AFAIK a NOP lasts for 2 cycles, but there must be some
reason ...

Or did you think about the timing needed for playing, not the individual
register access delays?

> sends on the back of sprite multiplexer interrupts.. Really just experiments
> and with it in mind that I'd love to be able to use it for in-game music, if
> it doesn't prove too costly.. Its always bugged me that no game has ever
> supported the Sound Expander, yet :)

I'm playing with the idea to write an S3M player (to be precise: S3M files
using only AdLib instruments, not digital samples), and a converter too
which "stripes down" the S3M for a more simple entity in sequence of BYTE
pseudo-ops in assembly source form, so it can be reused for an in-game
player engine which can be much more trivial than a fully-capable S3M player
with its complexity, and can be done in an IRQ routine or so ...

Still, I lost the interest a bit currently, since it's so sad that I haven't
got a real cartridge, it's not so fun to do it in an emulator only.
Currently only my DRO player work (however I have my IMF->DRO converter

> --
> View this message in context:
> Sent from the cbm-hackers mailing list archive at
>        Message was sent through the cbm-hackers mailing list

       Message was sent through the cbm-hackers mailing list
Received on 2012-01-25 15:00:46

Archive generated by hypermail 2.2.0.