Code Monkey home page Code Monkey logo

sidkick-pico's Introduction


.- the inexpensive dual-SID replacement that you can build yourself -.

The SIDKick pico ("SKpico") is a drop-in replacement for the SID 6581/8580 sound chips in the Commodore 64 and 128 computers. It has been designed as an inexpensive alternative to other replacements while not making compromises regarding quality. It consists of a simple interface board and a Raspberry Pi Pico (or compatible clone). The emulation is based on an extended version of reSID 0.16, and includes a few additional features:

  • dual 6581 and/or 8580 emulation based on reSID 0.16 (optional: extension for digi-playing techniques)
  • 2nd-SID address at $d400, $d420, $d500, $d420 + $d500 simultaneously, $de00, $df00 (on C128 no $d500), or any address when an external chip select signal is used (e.g. on Ultimate 64 boards)
  • paddle/mouse support
  • built-in configuration menu (launch with "SYS 54301"/"SYS 54333", also from C128-mode)
  • sound output via PWM (mono) through the C64/C128 mainboard, or in stereo using a PCM5102A-DAC-board (recommended)


You can listen to the SIDKick pico in two videos by emulaThor:

How to build a SIDKick pico

This section summarizes building and setting up the hardware.

PCB ordering

You can order the PCBs from PCBWay without or with SMD-parts preassembled: here.

You can find my other projects there. In case you don't have an account at PCBWay yet: register via this link and get "$5 of New User Free Credit".

Even simpler: Restore Store (not my shop) will offer pre-assembled SKpicos at fair prices soon.

There's a good chance that there will be more official resellers in the future. Please do not buy from those who knowingly violate the license and sell overpriced SKpicos out of greed (see Hall of Shame).

Building / Soldering

The first step when building the SKpico is soldering the surface-mount components. These are located on the bottom side of the PCB. Please see the BOM and assembly information here.

The next step is to solder the pin header and sockets which works best if you follow these steps:

  • solder the SID-socket pin header with 14 pins in the middle of the PCB
  • solder a socket for the Pico or the Pico directly (in case you solder directly with castellated edges: make sure to cut the pin tips and put insulation tape on them!)
  • solder the SID-socket pin header close to the edge of the PCB. It has only 10 pins, the connector Vcc-GND-CK-DIN-BCK is for the optional DAC!
  • no pins are required for the 3 connections at the center-bottom of the PCB!
  • optional: solder the pin headers for the DAC (blue) and additional address/signal lines (red)


Installing a SIDKick pico

Pay attention to correctly orient and insert the RPi Pico and the SKpico (see backside of PCB for markings) into the SID-socket of your C64 or C128. Note that in a C128D you might need to remove one support bolt of the power supply to fit the SKpico.

You can choose to emulate a single SID only. If you want to use a second SID you need to connect additional cables to get the signals to the SKpico as they are not available at the SID socket:

Installing additional cables in C64

SKpico pin C64 (see images for alternative locations)
A5 CPU Pin 12 (required for $d420)
A8/IO CPU Pin 15 (required for $d500)
OR expansion port pin 7 or 10 for $de00/$df00 addresses
OR external chip select-signal

Installing additional cables in C128

SKpico pin C128
A5 CPU Pin 12 (required for $d420)
A8/IO $d500 is not supported for the C128
connect to expansion port pin 7 or 10 for $de00/$df00
OR external chip select-signal

The photographs show various (other) locations where these signals can be tapped, e.g. A5 to A8 and IOx are conveniently available on some mainboards (see photo of ASSY 250469), A5/A8 at the ROM-chips (not shown on the photos: on the 250469 at the kernal ROM 251913 at pin 5 and 29, for example).

The built-in configuration tool autodetects and displays which cables have been (properly) installed and shows only possible SID-addresses.

Hint: before attaching/detaching signal cables, set the 2nd-SID address to $d400 in the config tool.


Audio Output

The PWM sound is output via the SID-socket. If you use the optional DAC you can directly get the stereo audio signal from the audio jack or connectors on the PCB.

Hint: You can also connect the DAC-output to the video-audio-connector of the C64/C128. Pin 3 is the standard audio output, pin 7 is often used for the second audio channel. If you do so: use the firmware which does not output via PWM.

Note, which of the two output options is active depends on the firmware that you use (there are options for PWM-only and PWM+DAC simultaneously). PWM quality is slightly better when the DAC output is not enabled.

The order of pins to connect the DAC to the SKpico is easy to determine: the order is given once you match Vin which corresponds to Vcc at the SKpico and GND to GND.


Powering the SKpico

The SKpico is powered from the C64/C128-mainboard, DO NOT power from USB.


Firmware Uploading

The SKpico-PCBs do not need to be programmed in any way. Only the RPi Pico needs to be flashed with the pre-built binaries (available in the release package).

The procedure is simple: press the 'Boot'-button on the RPi pico, connect to your PC and it shows up as USB-drive. Then simply copy the firmware (.uf2) to this drive.

IMPORTANT: DO NOT connect the RPi Pico to USB while it is plugged into your C64/C128! (but it's no problem if the Pico is soldered to the SKpico-PCB)


Sidekick64-/RAD Expansion Unit-InterOp

If you're using Sidekick64 or RAD Expansion Unit then you should update to their latest firmwares.


Configuration-Tool

The built-in configuration tool allows you to choose the emulated SID-types, digi boost settings, volume and panning and is hopefully mostly self-explanatory.

The mouse/paddle-settings ("POT X/Y") deserve a bit of explanation: as one goal was to keep the interfacing circuitry simple, you might need to adjust some settings for the SKpico to work (best) with your mouse or paddles. Once you move the cursor to the potentiometer settings, a preview of the values and movement is shown. You can now tune the configuration:

  • if a mouse moves only horizontally or not at all then choose the "level" option (by pressing 'V'). This option does not work with paddles!
  • if your mouse shows some weird jumps (e.g. values of 00 or FF) try the "outlier" option (key 'O'). There are two intensities: normal and aggressive outlier removal.
  • additional filters can reduce the inherent jittering of mice/paddles on the C64/C128: "median" is a simple yet good outlier rejection for remaining jitter. "smooth" uses a exponential weighted average (it comes in versions for paddles and mice).

NOTE: potentiometer filtering modes do not work with two paddles/mice used simultaneously.

If you choose 'reSID+digi detect' as emulation option, then the SKpico uses heuristics to detect modern digi playing techniques (such as that used in Vicious Sid) which are not handled by the reSID 0.16 emulation. These techniques, when detected successfully, are emulated with special code paths. The heuristics are based on the findings by Jürgen Wothke used in WebSid.

To avoid bus conflicts when you use cartridges operating in the IO1/2 address spaces, make sure you do not use the IO1/2 addresses for the SKpico as well.


Firmware Building (if you want to):

The firmware can be build using the Raspberry Pi Pico SDK and there's nothing special worth mentioning.


Disclaimer

Be careful not to damage your RPi Pico, PC, or Commodore, or anything attached to it. I am not responsible if you or your hardware gets damaged. Note that the RPi Pico gets overclocked. If you don't know what you're doing, better don't... use everything at your own risk.


License

My portions of the source code are work licensed under GPLv3 (except otherwise stated in a source file).

The PCB is work licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 (CC BY-NC-ND 4.0) International License.

CC BY-NC-ND 4.0 also means: selling for profit on ebay (e.g. indicated by pricing), or running a shop and offering hardware under such license (no matter on which platform) is a violation of the license -- claiming 'service for the community', 'for those who can't solder themselves', or 'offer at cost price' to sell related services does not comply with the license. It is, of course, absolutely fine to order a small batch (e.g. 10 units) and sell surplus units to friends.


License Hall of Shame

I have fun creating and improving the SKpico and my other projects. I'm happy when people share surplus boards at their own cost or make built SKpico available to others at low cost (I expect prices well below the official sellers). Unfortunately there are people seriously decreasing my fun factor by violating the CC BY-NC-ND 4.0-license for the hardware part, and this is the page section to which I come back when my mood has been spoiled: From now on I will list the license violations I'm aware of publicly (only public information, e.g. usernames will be used).

Please welcome these sellers to the Hall of Shame:

35 Euros? Obviously no commercial intent at all...
40 Euros? Seriously?
27.50 Euros for a pre-assembled PCB kit with almost zero own work invested?

Acknowledgements

Last but not least I would like to thank a few people: Dag Lem for reSID, discussions and insights; emulaThor, bigby, TurboMicha, quadflyer8 and others on forum64.de for testing and feedback/bug reports; androSID for discussions and lots of information on electronics; Retrofan for designing the SIDKick-logo and his font which is used in the configuration tool; Flex/Artline Designs for letting me use his music in the config tool. Magnus Lind for releasing the Exo(de-)cruncher which is used in the firmware. Jürgen Wothke for releasing WebSid.

Thanks for reading until the very end. I'd be happy to hear from you if you decide to build your own SKpico!

Trademarks

Raspberry Pi is a trademark of Raspberry Pi Ltd.

sidkick-pico's People

Contributors

frntc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sidkick-pico's Issues

Diagnostic reports control port bad.

250407 mb
C-64 Diagnostic REV586220++ using a harness.
The Control port and thus the sid are indicated bad.
I have tested it on 2 different SKP's.
First one was assembled by PCBway, I built a second one.

They both sound great, I just find it strange they are failing the control port.

Problems calibrating analog mouse

I'm using SKP with latest firmware together with an analog mouse that I know works with an old 6581 in f.e. Arkanoid.

The mouse is a M-3 Mouse (Contriever brand). I've tried most of the different settings but the "pico" sprite jumps around a lot. With the setting of "smooth mouse", disabled "level" and disabled "outlier", it seem to be pretty stable at the middle of the screen when not moving the mouse, I see values of 7A-80 in X and values around 6D-7x for Y. When I move it, the values/sprite jumps around a lot, even with this settings. In Arkanoid you can, kind of, control it (think it is going backwards..) but because of the jumping it is unplayable.

I can try more stuff but unclear what to fiddle with.

I also think the mouse can be used in different modes (can work as Joystick, Analog or Paddle mode) but this mode works perfectly with the original SID.

Sound on westbank sounds very strange on SKP

I've been trying out several games they all sound good but the game Westbank sounds very choppy. It doesn't matter if I choose 6581, 8580 or 8580+dig. They all sounds like crap. Can someone else try it too? I also tried 2 different versions of the game, both sound bad.

SKP sound strange on C64 NTSC

I've just build my first good Sidkick pico and using latest firmware 1.14. I tried it first on my odd NTSC machine just to be sure. All music sound weird and ill tuned. It still "plays" the tune but something with the timing/bus must be wrong. Also the settings menu was not possible to visit either so no settings could be made. Should the NTSC be auto-checked or is it up to the user to change it? When moving the exact same SKP to my childhood machine (been mine for 35 years) it sound perfect! So cool, thanks for sharing!

Is there anything I can do to help out? Coding for now I'm not ready yet but testing specific programs, recording video/audio, PEEK/POKE, testing versions of firmware

POT Inputs Unstable with Atari Paddles Connected?

While trying to pin down the root cause for Issue #31, I switched the SIDKick Pico over to my C64C that does not have the issue with the 'noise' on POTX that causes the second fire button to register as down all the time. I dug out my Atari paddles to see how the analogue inputs were registering, and I found they're unstable regardless of the mode I choose in the configuration program:

https://www.youtube.com/watch?v=V29rMY_XtLM

These paddles appear to work fine when using an original SID. So I guess my question is: can anyone confirm if the results observed in the above video are expected? I am starting to think I messed something up when I built the board!

Thanks.

EDIT: I found my NEOS mouse and have tested that, works perfectly even with Pot X/Y = raw. Paddles are constantly jittering in Arkanoid regardless of the Pot X/Y mode though.

Shorter board with all smd - is that possible?

First of all, kudos for the project: IS GREAT.

Second: in your opinion, would be possible to elaborate a pcb that can contain all the parts (shitfters + raspi pico stuff + dac) to solder on, to make it smaller?

Still serious problem......

Shadowfire, Enigma force (sfx before music starts & music itself ), Mutants are still not right as of 0.13........

I copied the pwm dfu onto the pi as before (drag and drop)

Diode silkscreen orientation confuses automation

Hi and thanks for this project 👍

I used the provided link to make an order at PCBWay and got a feedback question from them, asking confirmation about the orientation of a diode.

I compared their picture with the one in the Images/ folder of this repository and figured their system got it inverted.

Picture from PCBWay assembly line, where the diode is mounted with the wrong orientation:

image

Picture from this repository where the diode has the right orientation:

image

Based on a default footprint, it looks like the label + symbol have been inverted, but not the silkscreen lines surrounding the diode placeholder.

image

Is it safe to assume silkscreen should look like this instead?

image

Pico W for extras?

Does the implementation allow for some extras with WIFI and/or Bluetooth functionality in the future?
Any reason for a PiPico W not to work?

For example, some ideas:

  • Sound output through BT directly to speaker?
  • Web-UI for changing settings live while playing?
  • Output to external WIFI board (f.e. ESP8266) to control LED's gor graphics feedback?
  • Mouse control via either websocket or via BT-mouse?

reSID+digi detect actually mixed up with reSID 0.16 ?

I configured my SKpico for 2x6581 and was switching digi samples "heuristic" on/off and noticed huge sound difference in a third track of Vicious SID demo. However with the option enabled (reSID+digi detect) it sounds worse (my opinion) with high frequencies cut out, almost like enabled got mixed up with disabled in config tool UI. Just to make sure I ran Vicious SID on my 6581 equipped breadbin, and it sounds practically the same as SKpico but with emulation engine set to reSID 0.16, not +digi detect.

Recorded few sec:
vicious digidetect.zip

Serious problem

I'm having corrupted sound in....

Shadowfire (starts ok then sounds like it loses a channel )
Enigma force
Mutants

Firmware 0.12
Tried in both 6581 and 8380 with and without digi

Files from oneload64,v4

Using pwm only

Other files like fist2, light force, zoids, scarabaeus play fine

Single sid configuration using a KFF cartridge

Clarification on license please.

What's you position on reselling spare pcbs for cost + shipping?

I ordered extra bare boards from PCBWay, and was wondering if I could offer them up for the 0.66 each + the cost of a stamp and envelope?

Some problems

I order PCB preassembled and have some problems: PWM sound is almost inaudible and SYS command is not working. Got any tips?

A few compatibility issues (in common with Nano SwinSID)

Hi,

As many others have already said, thank you for this amazing project. The sound is really good (and unlike the Nano SwinSID the transfer game in Paradroid works just fine), but I'm afraid I have observed a few compatibility issues with some games:

  • Zeta Wing 2 (EasyFlash) smart bomb detonates immediately when collected, it is usually triggered by the space bar
  • Navy Seals (Ocean cartridge) character does not respond to joystick control when game is started, game resets after a few seconds
  • Myth (System 3 cartridge) fire button appears to be locked down / repeating from the start, inventory cycles constantly
  • Last Ninja Remix (System 3 cartridge) same bug as Myth, character is constantly jumping when the stick is moved

Interestingly, all of these bugs are present with the Nano SwinSID, but not the ARMSID. This is how I found these issues, I went looking for them. I have no clue as to what actually causes any of these, sorry.

My set up is as follows:

Breadbin / long board 250425
XCPLA replacement (similar to PLAnkton)
Kung Fu Flash cartridge
Stock KERNAL ROM
No disk drive connected

STILL... A serious problem

MUTANTS & SHADOWFIRE are STILL not right at all, not even close.

MUTANTS seems to repeat chunks of melody........

Shadowfire still has the seem issue i reported in 0.12 & 0.13.

Also, There seems to be some strange sound artifacting on some tunes where its like you can here the channel close with a dull POP....

0.14, using oneload64v4 via KFF cart

PWM

Other PCB Manufacturer

Hello,

If I wanted to have the PCBs manufactured by another company, such as JLCPCB, instead of PCBWay, where would I find the gerbers?

Thanks

Add Firmware descriptions please.

I've built a couple and downloaded the latest release, but the only thing in the release is 9 firmware files.

They mention LED and RGB, and PWM and Dac, but there's no instructions on what does what.

Any chance of adding a readme to the releases for clarification?

(I'm assuming you are using attaching a RGB led or regular LED somewhere, but I don't see that on the main page.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.