Džinova 8-bitová stránka
ARM2SID
What is it ?:
- A next logical step after succesful ARMSID. ARM2SID is based on the same blocks as ARMSID but one step more advanced blocks.
- Thanks to them, it added the possibility of emulating up to two additional chips and / or FM synthesis with OPL2.
- Like ARMSID, ARM2SID is a replacement for the MOS6581 and MOS8580 circuits used in Commodore C64/C128. It comes again in a minimalist form, but it can do a lot more.
- It can replace up to 3 chips at the same time, it can also emulate SFX sound expander as well as the newer FM-YAM clone.
- SIDs emulation itself is the same as with ARMSID, so emulation features can be read on its page.
- Firmware update possible inside the C64/C128.
- 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.
- STM32F446 processor (180MHz almost two times faster than ARMSID, 2x more FLASH memory and 4x more RAM, more pins, 2x 12bit DAC).
- The analog output is provided by the AD8646 audio amplifier (now in stereo).
- The 3.3V stabilizer, the processor itself has 5V tolerant inputs.
- There is an expansion connector on the board, you can either connect through it a second socket with a second control signals (chip-select and R/W) plus a second audio output or you can connect the connector to the appropriate signals on the computer board directly without another socket (especially if the computer hasn't a second socket).
- Block schematic in PDF here:
Firmware:
- Actual FW 3.15 from 23.1.2023 here. Or as a floppy disk image. Or here in zip.
- Please don't forget to download also a new configuration program.
- 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 3.14 from 16.7.2022 here. Or as a floppy disk image. Or here in zip.
- A new configuration utility is here. Update application and configuration utility both zipped here.
- Fixed a bug in tone pitch when generating noise (reported for example in Crazy Comets and Paperboy in FW 3.11 and 3.12).
- Fix in SFX emulation (some tracks were missing percussion).
- Unified SFX emulation sample rate for all settings (with correct FM frequency reference set) to approx. 49.7kHz as on original card.
- Optimization for speed, not only for running the emulation itself, but also the bus response.
- Application start-up is also faster, instead of hundreds of milliseconds, the ARM2SID is fully functional in less than 15 milliseconds from power connection !
- CS signals from both sockets are handled as independent accesses (important for use in synthesizers).
- 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.
- It is possible via configuration to disable the automatic extension of the left channel sound to the right channel if it is not playing for a long time (again, important for use in synthesizers).
- There is also an option via configuration to have only the data from the left channel play fixed to both SID channels (the emulation settings for each channel remain).
- Slightly modified quality (Q) of filter circuits for even more faithful reproduction of MOS8580.
- Older FW 3.12 from 9.9.2020 here. Or as a floppy disk image. 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.
- Fixed setting of the lowest filter frequency for MOS6581 emulation (sometimes the simulation did not match the settings).
- Older FW 3.7 from 19.1.2020 is here.
- Compared to version 3.6, only marginal changes, added reading of OSC3 and ENV3 registers to the third SID emulation, some fix for older bootloaders, a simplified user interface for the update application.
- Compared to version 3.5, a quick response in stereo mode was added (when using a second socket), the dual-mono mode is activated without timeout when both socket is addressed in the same time.
- Also upper addresses mapping is fixed in the update (sometimes misaligned address detection in the update application).
- Update application and configuration program zipped here.
- For the update, just upload to the C64/C128, run it and follow the instructions.
- If you have wired A5/A8 address lines, you can try 3SID files modified for D400h, D420h, and D500h addresses. Download here.
Configuration:
- New version of the tester and configuration program is here (source code is here).
- Multiple ARM2SIDs channels detection added to the program (addresses D400h,D420h,D500h,D520h,DE00h,DE20h,DF00h and 0xDF20h). If there are two or more ARM2SID channels than a choice is shown before the first screen:
- If only one ARM2SID channel 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:
- Important page for ARM2SID is the address mapping setings (by pushing key M from the main page), the default settings looks like:
- If you have the ARM2SID with two socket, it's necessary to change PIN CONNECTIONS setting from WIRE to SOCKET:
- And for stereo settings choose for the second socket emulation SIDR:
- The configuration can be stored again by pressing key P permanently or by key S till the power-off (recomended for a new settings test, if everything works as it should, save it permanently).
- For the case of direct connecting of signals A5,A8 (to processor pins) and CS2, R/W2, IO (to pins of computers expansion bus) you leave the setting on WIRE. Than you can choose an emulation for every decoded address, here is an example for playing 3SID tracks on addresses D400(left),D420(right) and D500(center):
- Through the setting EMULATION MODE you can choose an emaulation of SIDs (pictures up to this point), SFX sound expander:
- Or combination of one SID (in the left channel) and SFX (right channel):
- If you need it you can combine stereo channels to one mono channel (both channels are the same) by switching DOWN-MIX TO MONO to ON.
- All settings will take effects in emulation only after saving it by key S to RAM or by key P to save to permanent flash memory.
- On the new extra features page you can also "fix" the so-called ADSR-Bug. This is interesting if you are using ARMSID in some synthesizer where the original SID bug is undesirable. In C64 and C128, be sure to leave this option at "NO" to keep the original SID behavior.
- Another extra feature is to disable the automatic extension of music from the left channel to the right channel when the right channel is not playing in stereo configuration. This is again interesting if you are using ARMSID in some synthesizer, there such sound extension to the unused channel is again undesirable. However, nothing can stop you from setting this feature to "on" even when using a C64 or C128 if it bothers you for some reason. :)
- Finally, it is possible to permanently switch on the sending of data from the left channel to both channels, then the data is processed only from the address of the left channel, but is played on both channels (with their individual settings).
<= zpìt