Dinova 8-bitová stránka
ARMSID
What is it ?:
- A new replacement of the MOS6581 and MOS8580 used in the Commodore C64. It is minimalistic (in simplicity of circuit and use, not in function and power).
- Real "plug & play" solution. Just insert instead of the original SID into the slot and it's done.
- It determines (through supply voltages) which chip it replaces and starts the appropriate emulation (it can be changed later in software).
- No need to switch the PAL / NTSC version, the circuit uses directly the clock from the computer bus, always synchronous with the C64.
- It also emulates analog inputs (joysticks, mouse, etc. - POTX and POTY inputs)
- Analog output is sufficiently buffered, it is not necessary to change anything on the computer board for proper operation.
- Output sampling frequency is 1/16th bus clock of C64 (approx. 62kHz), real 12bit D/A converter, no pwm.
- Filters completely transferred to digital form, emulated by float point arithmetic.
- Significantly lower noise level and less interference from the power supply than the original :)
- Lower power consumption than the original, but also than all other modern substitutes.
- Firmware update possible inside the C64.
- Now available here.
What is inside ?:
- A few resistors, capacitors, one stabilizer, one opamp and a processor. That's all, parts only from one side.
- The only programmable circuit is the STM32F410, ARM Cortex M4 with HW float point arithmetic at 100MHz.
- Analogue output amplified via the AD8515 opamp.
- Stabilizer for the 3.3V processor, the processor itself has 5V tolerance inputs.
- Schematic in PDF here:
.
Firmware:
- Actual FW 2.16 from 15.6.2024 here. Or as a floppy disk image. Or here in zip.
- Please don't forget to download also a new configuration program.
- Fix for 2 MHz mode C128. Since this firmware ARMSID is functional for all modes and types of communication with C128 (even those incompatible with SID documentation).
- Added to the configuration the possibility to use the EXT IN input (pin 26) as an analog input and connect it to the internal mixer, as on the original chip. You should expect a slight increase in noise background from this input, I recommend using it only when you really need this feature.
- Also added to the configuration the possibility to change the emulation detection threshold of the 6581/8580 according to the input voltage (pin 28), so called autodetection. Originally this limit is set to 10.5V, what is below indicates 8580 emulation, what is above so 6581. With the new setting, this limit can be about 2V, so you can use logic levels of 5V or even just 3V for switching the emulation type (pin 28 is not used for power supply in ARMSID, only for voltage measurement, no power supply on this pin is required for function).
- Previous FW 2.15 from 7.1.2023 here. Or as a floppy disk image. Or here in zip.
- Fixed a bug with noise generation in the highest octave (reported for example in Crossroads II and Jumpman).
- SID type detection with this algorithm returns the actual type setting from the ARMSID configuration.
- Among other tracks, this allows you to play the last part of Wonderland XIII, at least if the ARMSID is set to emulate MOS6581. Prodigy rulez !
- Fixed bad music timing in Turrican 2 - The Final Fight (audible in track 2).
- Added undocumented playback of the "no" waveform, making, for example, the Boing Boom Tschak whistle significantly less (about 20dB down).
- Modifications in the generation of combined waveforms (not only) for MOS8580 emulation, where they are more close to the original (as close as possible for chips that are themselves different from each other, also dependent on temperature, voltage and time).
- Previous FW 2.13 from 6.12.2021 here. Or as a floppy disk image. Or here in zip.
- Further optimization of code speed and size. Also bus operations are faster, finally "paddles" are successfully read on NTSC machines even with the oldest HW versions of ARMSID (with components on top) !
- ARMSID start is also faster. Instead of hundreds of milliseconds, ARMSID is fully functional in less than 15 milliseconds after power-up !
- Added the possibility to "fix" the so-called ADSR bug, i.e. a bug in the envelope generator, which is inherent to the original chips and is reproduced in ARMSID too. This is not needed in the C64 for compatibility reasons, but if you use ARMSID in synthesizers, you might be interested in this feature.
- Slightly modified quality (Q) of filter circuits for even more faithful reproduction of MOS8580.
- Previous FW 2.12 from 9.9.2020 here. Or as a floppy disk image. Or here in zip.
- I remind you of the "Digifix" configuration from the previous version, if something sounds different to you on the MOS8580 emulation, please check the configuration.
- Fixed setting of the lowest filter frequency for MOS6581 emulation (sometimes the simulation did not match the settings).
- Previous FW 2.11 from 10.7.2020 here. Or here in zip.
- Digifix in MOS8580 emulation is now configurable. By the software it can be set to a few levels including inverse polarities.
- But now it's controled by external pin current by default (as a real MOS6581 is). If you miss it, just set it by the configuration program as you want.
- Digifix for MOS8580 is required for example in the Ghostbusters game, but most of the games, demos and music (specially new ones) is not counting with Digifix and can produce some additional noises and hum.
- In this FW is finished the hotfix in noise generation (test bit) from previous FW, now is no sound missing for example in the TestBit_4x.sid.
- Last but not least, there are fixed inner analog offsets in the MOS6581 emulation. And now there is less distortion in some demos (for example Mahoney - Musik Run/Stop) and no more clicks in some games music (for example Bubble Bobble).
- A small fix in tone counters updates in the fast changes.
- Faster release of the data bus after reading cycle.
- Older FW 2.9 from 17.4.2019 here.
- Here is the same FW but inside an update without reading the registers during the update (especially useful if you have a problem with ARMSID detection) "blind" FW 2.9 update.
- Or both updates and configuration program zipped here.
- For the update, just upload to the C64, run it and follow the instructions.
- News features and fixes in FW 2.9:
- A longer time is required to activate the reset signal (some issue with board 250407 reported where can be short spikes on the bus, now fixed).
- Small fix in noise generator on the lowest bits. Also faster computing.
- Other speed and code size optimization.
- Older FW 2.8 from 17.2.2019 here.
- Here is the same FW but inside an update without reading the registers during the update (especially useful if you have a problem with ARMSID detection) "blind" FW 2.8 update.
- Or both updates and configuration program zipped here.
- For the update, just upload to the C64, run it and follow the instructions.
- Differences between FW 2.8 and previous version:
- The start and the end of the bus data cycle (reading or writing) is now controlled by signal CS only (it was the same on the beginning of the cycle, but the end was controlled by 02 clock before), it can help with a bus stability in other systems than C64 a C128.
- Internal frequency generators are updated with precision of one 02 clock - about 1us (no audio signal phase changes after frequency retuning) !
- Correct polarity of the bandpass filter.
- Added emulation of internal filter voltage offset.
- Added the "Digi Boost" feature by software - an effect similar to adding 330kOhm resistor between EXTin and GND on the MOS8580.
- Other speed optimization.
New features in FW 2.7:
- Faster internal clock for a new HW revision.
New features in FW 2.6:
- Optimization for speed again (approx. 10ns more faster response to read registers, faster processing of writing registers).
New features in FW 2.5:
- Again faster interrupt (approx. 10ns more faster response to read registers).
New features in FW 2.4:
- Further optimization of the interrupt (approx. 20ns faster response to read registers).
New features in FW 2.3:
- A part of source code (interrupt routine) has been rewritten in assembler and manually optimized.
- It makes a possibility to control the bus only through the CS signal (no need for O2 clock synchronization, so it can run on systems with a different CPU than MOS6502 now).
- Low frequency limit and filter strength settings and saving settings to permanent flash memory.
- Emulates all waveforms, and even "samples" (at least some of them, Ghostbusters laugh, Chimera screams at you).
- Full support of analog filters (LowPass, BandPass, HighPass, combination, Q quality control).
- Emulation of OSC3 and ENV3 registers (little delay, approximately 16 clocks of the C64 bus).
- Joysticks and mice work.
Configuration:
- New version of the tester and configuration program from 15.6.2024 is here.
- Multiple ARMSIDs detection added to the program (addresses D400h,D420h,D500h,D520h,DE00h,DE20h,DF00h and 0xDF20h). If there are two or more ARMSIDs than a choice is shown before the first screen:
- If only one ARMSID is detected, the choice is omitted and the first screen is started immediately.
- The first screen from the configuration program:
- It is possible to change the emulated chip MOS6581 or MOS8580 or leave it on the automatic according to the supply voltage (set when the power is turned on).
- In this new version, we can save the settings permanently (into flash memory) to continue with this settings even after next power on.
- New features - low frequency limit and filter strength - are located on a new screen accessible by pressing the E key:
- The filter strength for MOS6581 corresponds with measurements published here.
- For MOS6581 the strength of the filter can be decreased or increased totally in fifteen steps (-7 to +7), the lower frequency limit can be set to 150,215 and 310Hz, for MOS8580 and center frequency settings the filter can be tuned from 3kHz to 12kHz in seven steps (cca 1/3 octave/step) and the lowest frequency tuning in seven steps from 30 to 330Hz. An example of other than default settings is here (controlled by cursor keys):
- It is now possible to set Digifix for MOS8580 emulation in the configuration, we can get to it via the D key from the main menu:
- Digifix can be set either by an externally grounded resistor on the external pin (as for the real MOS8580) or we can switch to software emulation and set the level in a few steps manually (one of the options is 0%, ie off):
- This configuration can be saved (by key S) to the RAM of ARMSID, so it can hold it to the next switch off only:
- Or we can save it (by key P) permanently (to the flash memory) to hold the configuration after the power off:
- On the new extra features page we can "fix" the so-called ADSR-Bug. This is interesting if you are using ARMSID in some synth where the original SID bug is undesirable. In C64 and C128 be sure to leave this option at "NO" to keep the same behavior with the original SID.
- Setting "LOW AUTODETECT THRESHOLD" to yes changes the decision level of the automatic detection of the emulated 6581/8580 chip on pin 28 from 10.5V to just 2V, so it can then be controlled for example by a logic level (from 5V or just 3V supply), especially suitable for use outside the C64 where no other supply voltage than 5V is needed.
- And by setting "EXT IN MIXED TO THE FILTER" to yes, you connect the external audio input (pin 26) to the internal mixer, allowing it to be connected to the output or input of the filter, as with the original chip. The input adds a small amount of noise, use only if you really need to, for the lowest possible noise to signal ratio.
- A source code of the configuration program written in C is here.
<= zpět