SIDcog - The sound of the Commodore 64 ! (Now in the OBEX)

1234568»

Comments

  • mstrammstram Posts: 41
    edited April 2015 Vote Up0Vote Down
    Why has (v14 )
    public virtual void PresentChip(Propeller host) { }
    

    been changed in v15 to
    public virtual void PresentChip() { }
    

    Is it supposed / going to be : ?
    public virtual void PresentChip(PropellerCPU chip ) { }
    

    Or is there some other mechanism in place / planned to pass the current chip to PresentChip ?
  • GatunoGatuno Posts: 20
    edited April 2015 Vote Up0Vote Down
    Hello Mike:
    The reason to don't have a Propeller as a parameter in that method, is because in the new version it is included in the Base class, so if you needed inside PresentChip(), you just call it as
    Chip
    
    .
    I want to ask you to post the questions about the GEAR plugins in http://forums.parallax.com/showthread.php/156347-Improved-GEAR-Emulator, to be respectful with the thread about SIDCog.
    To clarify better how to use the new plugin system, I could post there a template for the plugins.

    Antonio
  • Any chance someone could post a new link for the SID Dumper tool? The one on the first page of this post seems to be down.

    Thanks!
  • I put a copy of the SID dumper.zip file I had here

    Hopefully someone can point us to a more permanent location, since I will probably only keep the above file available for a short time...
    Along with 'Antimatter' and 'Dark Matter' we've recently discovered the existence of
    `Doesn't Matter`, which appears to have no effect on the universe whatsoever.
  • Could it not be put on GitHub?

    I'd be happy to create a repo for it (and the SIDCog) assuming I don't violate any rules.
  • cbmeekscbmeeks Posts: 560
    edited April 2016 Vote Up0Vote Down
    If someone wants to post the SID Dumper again, I will create a GitHub page for it.

    Just please send me an IM so that I know to look for this post.
  • The dumping process, closed source and windowsness of the SID dumper drove me crazy, specially with respect to using Propeller HAT as a SID-chip companion to the Pi.

    I hacked up siddump into a utility that could stream the registers right out of a SID file and over the UART. By extension it could also be easily modified to dump them by just tweaking the console output and piping the result to a file.

    It's a wip, but is presently quite usable if you're willing to tweak a couple of values in code:

    https://github.com/gadgetoid/sidstream
  • New to the parallax propeller & register to ask this

    What do I load on the propeller to make propeller hat accept SID data from the raspberry pi?
  • You will have to ask Gadetoid!
    Even though I'm the developer of SIDcog, I don't know what protocol Gadgetoid uses for streaming SID-data.

    /Johannes
    SIDcog - The sound of the Commodore 64 in a single cog: Thread, OBEX, SIDcogMedlay.mp3
    AYcog - An emulation of the AY3-8910 / YM2149F PSG: Thread, OBEX
    SNEcog - An emulation of the SN76489 PSG(and variants): Thread, OBEX
    Propeller chiptune player: Thread
  • I'm thinking of using this in my homebrew build, which is based on an actual 65C02. To that end, I have a couple of questions:

    Does the SIDcog implement all the SID registers or just the write-only ones? (This is mainly out of curiosity, I don't think I need the other ones)
    If I want to use this with an external processor, would I have to write a cog to adapt the processor's bus to the SIDcog?
    What sort of maximum speed do you think I could expect to run an external 6502 at? (I think I can get around this with a little external hardware and a bit of code in an adaptor cog, though, so it's not a problem if I can't sit this directly on an 8-10MHz 6502-style bus)

    Sorry for the necro.
  • potatoheadpotatohead Posts: 8,868
    edited August 11 Vote Up0Vote Down
    My general understanding is:

    If you are clocking the 6502 externally from the prop...

    An 8 to 10 Mhz 6502 is fast relative to a propeller participating on the bus directly. Pretty sure this is too fast.

    You would have to write a COG either way. This has been done, which is a very nice leg up.

    I never looked at the register implementation. SIDCOG can play C64 data dumps. That suggests the registers are there. Or at least what you need to present them to the 6502 to do sound is there.

    You could slow the bus when talking to (ugly, IMHO), or buffer the data to match up to a propeller. (Sweet)

    Propellers participate on a 6502 style bus just fine, but due to number of pins, it's common to use latch, buffer chips and signals to allow the prop to prepare the necessary signals in multiple steps. Sidcog does not need many pins for output. You should be able to talk to the bus by latch buffering an address, then data.

    Done that way, you could leave your bus at speed and just expect some time to pass before a transfer operation completes.

    If you do that, you get a couple Mhz I/O throughput maybe 3? If you exchange data too quickly, some is lost and or duplicated. But!

    This is more than enough. A real SID clocked at 1mhz. Having 3 would mean getting more out of the emulation, if you want to.

    On your 6502, just make a bit of code with delay time baked in, and call for reads and writes. A music player could also run just fine on an interrupt.

    Maybe include a configurable and maskable interrupt signal from the prop. You could optionally have the Prop signal for transfers, if you want peak rate.

    If you have a 6522 (ideally a faster workalike), those have timers and an interrupt signal as well. Set one of those up for 1mhz, and you would have a nice basis for playing existing Sid tunes. Or, if you want interrupts free, and or not complicated by multiple things needing the two available, you can just poll a timer and likely run sound with another short task using the interrupt, say a mouse or other I/O device.

    Or!

    If you have the Prop clock the 6502, about 3Mhz is possible, and it's been done, there are circuits out there you can build on and from. I'm pretty sure the 3mhz ish figure is based on an 80Mhz prop. They clock to 96Mhz reliably with a 6Mhz xtal. Those can be hard to source. Parallax has them. Bill Henning did a run a long while back. He will have them too.











    Do not taunt Happy Fun Ball! @opengeekorg ---> Be Excellent To One Another SKYPE = acuity_doug
    Parallax colors simplified: http://forums.parallax.com/showthread.php?123709-Commented-Graphics_Demo.spin<br>
  • PublisonPublison Posts: 9,733
    edited August 11 Vote Up0Vote Down
    potatohead wrote: »

    If you have the Prop clock the 6502, about 3Mhz is possible, and it's been done, there are circuits out there you can build on and from. I'm pretty sure the 3mhz ish figure is based on an 80Mhz prop. They clock to 96Mhz reliably with a 6Mhz xtal. Those can be hard to source. Parallax has them. Bill Henning did a run a long while back. He will have them too.

    The crystal sold by Parallax is a 6.25Mhz:

    https://www.parallax.com/product/251-06250

    This yields a 100 Mhz clock at 16XPLL.
    Infernal Machine
  • I'm thinking of using this in my homebrew build, which is based on an actual 65C02. To that end, I have a couple of questions:

    Does the SIDcog implement all the SID registers or just the write-only ones? (This is mainly out of curiosity, I don't think I need the other ones)
    If I want to use this with an external processor, would I have to write a cog to adapt the processor's bus to the SIDcog?
    What sort of maximum speed do you think I could expect to run an external 6502 at? (I think I can get around this with a little external hardware and a bit of code in an adaptor cog, though, so it's not a problem if I can't sit this directly on an 8-10MHz 6502-style bus)

    Sorry for the necro.

    No, the read-only registers POTX/POTY/OSC3/ENV3 are not implemented.

    I had one version of SIDcog modified to implement OSC3 and ENV3 registers, see http://forums.parallax.com/discussion/133075/polyphonic-sidcog-synth-wip

    Unfortunately, to get the cycles needed to write back to HUB it was necessary to permanently disable oscillator 3 output (which saved one multiplication), while still keeping it's envelope and phase-accumulator/waveshaper running just to get the modulator values.

    However, I'm quite confident that if you clock the propeller with a 6MHz or 6.25MHz crystal, and keep the SID samplerate at 31250, there should be enough spare cycles to implement that modification *AND* switchable OSC3 audio output as in the original chip.
  • Oops, thanks. 6.25Mhz

    Do not taunt Happy Fun Ball! @opengeekorg ---> Be Excellent To One Another SKYPE = acuity_doug
    Parallax colors simplified: http://forums.parallax.com/showthread.php?123709-Commented-Graphics_Demo.spin<br>
  • DerTrueForceDerTrueForce Posts: 2
    edited August 11 Vote Up0Vote Down
    Thanks for the info!

    Given that there's no reads to worry about, I can probably get away without wait-stating the 6502. I'm thinking of setting up a "data taken" output on the prop. The props CS would be controlled by a latch set by the external register's CS, and reset by the DTKN signal, which would also be broken out to at least one memory location for polling purposes(one dedicated, or the whole SIDcog address space in read mode). I have the idea that I should build some kind of interrupt capability into it, but I'll have to think on how to do that.

    This'll be a bit of a hybrid/mongrel bus interface, by the looks. The DTKN is similar to the 68K's DTACK, I think, and I think it will be easier to implement if I use the Intel-style RD and WR signals that I'm already generating. Not much of the 6502 bus there, it seems. A little funny, that.
Sign In or Register to comment.