I'm a collector of classic coin operated arcade game and I'm trying to figure out how to replace the old, unreliable data cassettes on DECO arcade PCBs with something solid state using an Arduino. The data is recorded on microcassettes that have two channels and I've got (in theory) the ability to dump audio recordings of it to my computer. Playing it back as MP3s won't work as that format is compressed and it'll lose part of the data, and if its recorded as a WAV it has to be at least at 44,000 and both channels have to be played back simutaniously.
I've got (in theory) the ability to dump audio recordings of it to my computer.
Why would that help?
Do you know the format of this data? Is it digital?
How are you going to store it on the arduino once it reads it?
I presume you also want to play it back.
Do you have an oscilloscope?
I know the data can be recorded to the PC because that's how MAME got it for their ROMs, and I've got a schematic for a simply circuit they used to connect the PC audio card's mic to the cassette's cable for just that purpose. I'm assuming that since it can be recorded in this was it's simular to the data from TI 99/4a computer cassette programs, except with two channels.
I've seen Arduino boards for sale that'll play back MP3's and WAV files at 22,000, but haven't found anything yet that'll quite play the files at the quality I think they'll need.
The idea is to substitute the worn out tapes and cassette mechanism with something solid state that'll play the data right into the data channels using the commands sent to the original player like 'play', 'rewind' ect, recording it on the PC will preserve the data and allow me to change it's format to suit whatever other playback hardware I figure out.
No doubt there's a way to just bypass all this nonsense to begin with by modify the main PCB's bios and having the data perminantly loaded into RAM, but I'm not talented enough to even begin to figure out how to do it. And besides I'm hoping to come up with something relatively simple people can use to preserve these games rather than trashing them like has already happened to too many, they're notoriously flakey and original sets that still work are becoming rare.
I'm assuming that since it can be recorded in this was it's simular to the data from TI 99/4a computer cassette programs,
That is a very big assumption and one that is very probably wrong.
This is because there were dozens of incompatible early cassette formats in the early days but not one of them used two channels simultaneous. Using two channels suggests to me a sort of Wegand format when one channel records the ones and the other the zeros.
However what you need to do is to get a scope on it and see what is being produced.
I've seen Arduino boards for sale that'll play back MP3's and WAV files at 22,000,
And the reason why no faster is the limit of the speed of the arduino and compact falash.
Well the data MAME has collected and uses for these games came from dump the audio from the cassettes to a PC, so it seems to me regardless of what format it is recorded in as long as the file created is capable of playing it back with all it's frequencies intact and at the correct speed the original PCB should be able to load the data.
As far as the two separate tracks go my understand is one is the ROM data and the second is a sync pulse.
If the Arduino isn't capable of directly playing the data back at the correct frequencies and speed then I'm hosed to start with, unless there's some kind of playback circuit I can use that'll handle it and use the Arduino to simply translate and control the play, etc commands.
GoForSmoke:
There are cheap Sansa MP3 players that do record and play WAV files.
That's a thought, it would be a little cheesy but better than nothing I guess, and I do have a 2gb Sansa sitting around. Ultimately though I'd like to come up with something simple and dedicated that doesn't rely on hacked hardware, because when you use something in a way it wasn't intended for you've got to wonder about long term reliability.
If you use servos to push the buttons then yeah reliability is a worry. If you do some surgery, remove the buttons and solder to the contacts and get rid of the battery then what's left should be as solid as your MCU.
OTOH you could find an MP3 shield that can play WAVs and has SD capability. It might cost a few X more but if that's what you need then why not?
The whole idea I'm trying to say is that there is hardware you can add that will do the job the Arduino won't easily do or maybe do at all.
For all that matter you might find a small SBC like Beagleboard or less costly and make that do. A micro-ATX or laptop/netbook mobo with maybe 256M RAM can boot and run fast from a flash drive with Puppy Linux, run rings around Arduino for less than $100. Be sure -that- could play WAV files even if it would be overkill-cubed. I was just suggesting using a possibly $10 MP3 player....
GoForSmoke:
OTOH you could find an MP3 shield that can play WAVs and has SD capability. It might cost a few X more but if that's what you need then why not?
I've looked but so far I've only been able to find ones that handle WAV playback at 22khz, it needs to be at least 44 to retain all the data.
Are you sure? Standard 44,100 Hz is less than 23 usec per cycle.
But SPI can be way faster than that so it -may- be that using SPI or I2C the Arduino could do as you need.
I would dare say that the amount of data that you need to transmit/receive could still be make or break. Sure the cassette is probably loaded with sequences but how many different commands and how long are those? Could 1 at a time be buffered into SRAM and fit to be shoveled out?
Just finding out would be an awful lot of work compared to copy-the-tape-play-the-copy.
You could go the minimal PC route, it may be the easiest option short of getting new cassettes to run another couple decades.
I'm starting to think I'm putting the cart before the horse here, I guess what I should start by doing is record a file of that tape on my PC and see exactly what kind of format the main PCBs can handle and still load the data, then work back from there and see what kind of hardware is needed to handle it.
If you have the ability to read an audio stream from the microcassettes, which don't you look at the resulting waveform and see if it is you can recognise a binary data stream on it. Do you also have the capability to record onto a similar cassette? If you do, it would be useful to know whether simply duplicating the audio stream gives you a useable tape. Because if it doesn't, you're pretty likely to be wasting your time starting from an audio signal.