MOS6581/MOS8580 based Chiptunes-Player for .SID-file-format

This is a device, which is built for playing chiptunes from the HVSC (High Voltage SID Collection). This huge collection contains more than 42.000 .SID files. A normal PC can play the tunes by using a "SID Player". Persons, who really like this kind of music say, that these players don`t sound like the original ones on the Commodore C64.
This is a device, which is built for playing chiptunes from the HVSC (High Voltage SID Collection). This huge collection contains more than 42.000 .SID files. A normal PC can play the tunes by using a "SID Player". Persons, who really like this kind of music say, that these players don`t sound like the original ones on the Commodore C64. To solve this problem I made a sketch for building a simple Device, which is able to load the SID-Tunes from an SD-Card and play them on a real MOS6581 chip.
The main part has finished, yet.
The system consists of two parts: The SD-controller and the player. I did it in this way, because I`m not able to make PCBs. So I couldn`t use one "big" MCU like the ATmega128 for the whole system (Soldering SMD on a veroboard is a bit tricky)
The SD-Controller consists of the following parts:
- A LCD with 4 rows and 20 columns
- ATmega1284, which reads and writes Data from and to the SD-Card and communicates with the Player
- The SD-Card - A 2x4 keyboard matrix (not all buttons are used at the moment)
The real Player consists of the following parts:
- A MOS6510 CPU
- 128K SRAM (Only 64K are used)
- The SID chip
- An Adress-decoder (4068 and 74HC 14)
- A 1MHz Oscillator
- ATmega16, which receives data from the SD-Controller and writes them to RAM
- Two shift-registers (74HC 595) which connect the MCU to the CPUs Adress-Bus
Playing a SID-Tune is easy: The ATmega1284 runs a simple File-Manager. You can select a .SID File with some Buttons. Once selected, the ATmega1284 automatically sends the Data to the ATmega16. The Atmega16 then writes the data to RAM. After that`s done, it puts the /Reset-line to High and generates a 50Hz/60Hz IRQ Signal. That`s all. The Tune is now Playing. There are functions for stopping and pausing, too. On the LCD you can see some information about the tune. There is also the possibility to add some tunes to a "Favorites-folder". You can see the first working Version running on YouTube:
http://www.youtube.com/watch?v=qzBzM6oRkYE
The only limitations are that some tunes want to make use of a more complex System (C64) which is not completely simulated by the player.
The next version will have an ATmega128 which contains the Software of both MCUs. There also will be an relay to switch between the 6581 and 8580 (better filter operation).
There is no PCB Layout for this Project, because I built the prototype on a veroboard. I think a PCB in this Size would be to expensive for only one or two units.
________________________________________________
I think it`s time for an update:
Some days ago I started working on Version 2
This time there is only one ATmega1284 (I know, I said it`s not possible, but I was wrong). This single AVR controls the whole Player. The ATmega16 ist replaced by a third shift-register (74HC 595).
Another improvement is the expansion with a Real-Time-Clock (DS1307) and a second SID-Chip. The last one makes it possible to perfectly play-back the 6581 and(!) the 8580 tunes.
Some weeks ago I got an E-Mail. I was asked to build a 16-segment display for the player. The actual Hardware is designed to connect with a 16-segment display. But first I want to get the main-system work.
________________________________________________
After fixing the adress-bus, I got the new Hardware running. Sounds great!
Now I will have to write the code for the file-manager an the menues.
________________________________________________
05.07.2014:
A wire on one of the shift-registers was`t soldered properly. Now about 80% of the tested files work properly. Of course there are still some issues, but I think most of them are on the software-site. I also think there are some special things SID-Files may use, which aren`t declared in the file-header. It`s strange that the problems not only occour with files from a specific musician with special programming skills.
Here`s an example:
https://www.youtube.com/watch?v=t06AAeSWako
As you can see it`s already useable.
Discussie (1 opmerking(en))
Jacco de Wijs 8 jaar geleden
i am working on a similar project at the moment but i am stuck at the menu/sd card part of the code.
do you think i could have a look at your code? Especially the menu file structure part.
your help would be highly appreciated!
Regards,
Jacco
Michel Förch 8 jaar geleden
I'm not sure wether it is too late to help you, but I will look for the code and upload it here next days.
Quick update: The project is now dead for about a year now. First problem was that version 3.0 killed 2 SIDs in a row without any obvious reason. The latest version used a raspberry pi and some logic ICs to communicate with the SID. The Pi itself runs an 6502 emulator which I wrote for a school project to interpret the SID-files. After about one day of debugging it played most of the tunes the Hardware-Player could do. But then after about a week of operation the first 6581 quit without any prewarnings. I thought it was just old and "had to die" but the next Chip (8580) was fried just about 2-3 hours of playing later. Now I'm not sure wether it was just a bad coicidence or my player doing something wrong.
A nano SwinSID worked great BTW. :
https://soundcloud.com/michel-f-rch/cybernoid-ii-jeroen-tel-swinsid
I also started to study and time is pretty rare at the moment. Maybe I will give it another try in the future.
As I said I will try to find the code, but don't expect to much. It's a mess :D
Best regards
Michel