Monday, November 30, 2009

These are not the chips you're looking for

[EDIT dec7th 2009] the wikipedia page has been corrected!Thanks!

According to wikipedia there is a VRC6 chip inside a North American Nigel Mansell "World Challenge" cartridge. Well no, there isn't. And there's no such thing as "World Challenge" either, only "World Championship" same difference.

Looks like Ill have to dig up the big bucks for a Japanese Castlevania 3 cart.

Monday, November 9, 2009

TED: The 100$ noise pattern

101001011  (low frequency version: audio)

Working C16's and plus/4 are HARD to come by,
and people need to pay the price for a working
MOS8501 CPU and a MOS8360 TED chip.

I needed a real machine to analyze the TED noise pattern
(and pitch ranges) for a future version of chipsound,
so I won a working plus/4 on ebay, which cost me 100$
(with shipping) to Montreal, not that bad actually.

The TED will be included in an update for completism more
than anything, because the only thing that's unique about it
is its noise pattern. Otherwise its a very simple VDC
unit that generates 2 voices. Many plus4 users actually hook
up SIDs to the machine, or just use the chip as a DAC,
which is the case for demos such as this one

Confirmed VICE plus4 emu generates the same pattern,
so all is good.

(100$/255bits = 39cent/bit)

But is it cute??


Hum, nah, im not cleaning that GUNK to find out!

Wednesday, October 28, 2009

Full AY emu prototype

Well I've talked about this before, but I'll say it again.
Designing a synthesizer that claims full chip authenticity and playability at the same time is the toughest challenge I'm faced with.

It hard to give access to powerful sound tweaking possibilities available on some chips when the synth paradigm you are basing your whole design on is of the standard
[voice0 + voice1 + voice2 + (...) + voiceN = mix]

Look at this signal path for instance:

It becomes clear that something like this doesn't fit that particular mold.

The AY has five generators: 3 tones, 1 noise, and 1 envelope.
It also has three independent audio output pins, that are mixed in the analog world differently in all the AY-based systems.

Now each of the output has its own tone generator, but it can also be mixed with the lone noise pattern (either, or combined with a binary AND). On top of that each output can have its volume changed independently (16 log steps), or be amp-modulated by the LONE Envelope generator. (more in the spec)

Anyone who's messed with an AY knows that the fun comes from mixing the env/tone+noise in certain ways which can make unique drones/beats that any IDM/Experimental student would enjoy.

But you can't currently do these in chipsounds v1.0 due to voice paradigm its based on. From recent user questions on the AY matter, it surprised me how programming a straight chip emu sounds like a hard task.
But in reality, in comparison to trying to make it fit in ARIA/SFZ, making a separate module that purely emulates the chip in bit perfect manner (and with all its limitations) is really not the challenge it appears to be.

The AY is a relatively simple digital state machine

Here is a snapshot of my current prototype (made using Bidule's C++ SDK):

And the type of drones you can dynamically make by moving the sliders here:
Example A
Example B

Its currently unclear if/how this will be integrated in chipsounds, or given for free for Bidule users. Please stay tuned!

Saturday, October 17, 2009

How I recorded and decoded POKEY's polynomial counters;Open Pokey Recipe for the curious


This is a "reprint" of the comments inside "POKEY.sfz", the chipsounds POKEY configuration file. (the original date is March 2009)


Was I naive to think that POKEY was just "another TIA", and I spent enough evenings to regret it. Making the breadboard and having Pokey spew some tones was the easy part, but soon realized that various frequencies gave me different patterns (sometimes after retriggereing the SAME note!)

So I tried many things, recorded GB's of tests and had a few ideas.

After lots of trials and loss of sanity:
Here is the FINAL methodology that I used to get usable data:

A)Clock a POKEY with a VERY SLOW clock (I used a +- 10Khz 50/50 PWM signal from a PIC)

B)Set Bit 6 of AUDC1 ( "1.79Mhz" or cpu clock)

C)Play the highest notes you can for each pattern: AUDF1=0 then AUDF1=1, (...), AUDF1=4

D)Record each bit pattern and pass it through our patternfinder util.

Now since the results are NOT the source pattern, but a "resampled" pattern made after skipping 4+AUDF source pulses for each destination pulse (according to the POKEY spec's "MODIFIED FORMULA"), we must derive the actual SOURCE pattern from the results.

The trivial thing to try is this:

void Shuffler(const char*in, char*out, size_t len, size_t shufsize){

size_t cnt=0;
(size_t i=0;i<len;++i){

out[i] = in[cnt];

cnt = cnt % len;

In this case my recorded AUDF1=0's 4, 9 and 17 bit patterns gave the exact same results as source OR destination (with added offset before looping of course), which kinda proves that AUDF1=0 can give you the full pattern, and that there is magic somewhere (try that with any other random bit pattern for fun). With this source pattern I was able to verify my own "software resampling" using AUDF1=1,2,3... and so forth from my recordings for a match.

4bit poly: 000011101100101

However, and that's where the fun ends, the 5bit pattern was a pain. Patternfinder kept giving me a 62 bit long repeated pattern:


and NOT a 31 bit pattern like I expected!

I noticed that the former 31 bit half of that pattern was always the inverse of the later (whatever point at which you start).A "hint" that the results im getting use some form of inversion. Schematics show that the source pattern passes through the same circuit logic as the "plain square" so it is used as a "please invert previous bit" matrix

SO: Inverting THAT pattern (fill/skip_4 a 31 bit pattern) gave me the following from my 62 pattern: "1101001100000111001000101011110". Which, as with the 4,9,17 case was used to test for the generation of AUDF1=1 and other frequencies.

chipsounds specific:

A few unique oscillators have been made just for this chip.
One and Two Stream AND-ers and One Stream Differentiators were required to emulate the inner process of the POKEY chip.

Invaluable help from "DeRe Atari Chapter 7", and from the official specs.
And for the various Pinouts/Skematics found online.

Thursday, October 1, 2009

Last minute addition: Odyssey 2 (P824x) VDC chip!

Building a software product and analyzing hardware are two very important facets of a product like chipsounds. Do mostly the analysis and you have a very techy app that no one understands, do only the former and you miss that that hands on feeling and the smell of printed circuit boards.

So this weekend I took a little break from coding (which is very close to done anyway) And looked at the few consoles in my lot that are not fully analyzed yet (I will add more chips in updates). And decided that chipsounds 1.0 required the Odyssey2.

The interesting thing is that there is no sound-coder-friendly documentation on the P8244/P8245 online yet, so I figured might as well publish everything I've learned so far.

My research consisted in confirming Sören Gust's info from g7kbios.pdf and to go further in trying various combination of tones and timbres that would be possible on the console itself without using IRQ based resynchs and also to check on MESS's source code theory of the "OR"ING of tone and noise, and to check for their claim of a 16 bit LFSR used for the noise channel.

On top of his great commented Bios document, Gust kindly provided the community with example assembler "Hello Worlds" for the console and even an improved the BIOS sound player which I then used to run tests on the "real thing", using a ripped apart Baseball Cart and a 2732 eprom (2k code is mirrored twice)... don't have 2716's at hand yet

The available docs mention a 24 bit shift register that is clocked by only two dividers: 983Hz 3933Hz, without any concrete info on how those two frequencies are achieved by the hardware from the master clocks in the first place.

So what is the main clock divisors for this chip?

Before trying to hack in assembly/eprom, I played with the few cartridges I had, and found out that pressing (and holding) the reset button stalls the CPU, but not the VDC, which keeps playing the current tone (or noise) - very handy indeed.

Long tone segments were recorded by tapping the audio signal at the junction of the main board and the RF box. (a tad bit of LP filtering at this point but nothing heavy)

Various NTSC Recorded pitches (Bidule FFT/PVOC Loudest freq analysis)

Assuming 1966.572266Hz came from this pattern: 101010101010101010101010 this means a high freq of would be generated from a clock of 3933.144532 (2x) Which tends to confirm the 3933 value. (note: 983 is just 3933/4)

The preliminary docs for the Intel VDC included in Arnim Läuger's
mcs-48.pdf Mentions the 3933 value comes from 15734/4 but nothing else. Looking around for the source of this frequency:

NTSC television scans 525 lines about 29.97* times a second = 15734.25)
SO -> Precise (theoretic) NTSC values would then be:
15734.25/4 = 3933.5625 (high from now on)
15734.25/16 = 983.390625 (low from now on)

(PAL television scans 625 lines * 25 times a second = 15625)
Precise (theoretic) PAL values would then be:
15625/4 = 3906.25
15625/16 = 976.5625
(would love a Videopak machine to confirm)


Using Gust's improved BIOS player:

We can verify that:

1)DAC is linear, from recordings of a programmed ramp of the 16 volume values

2)Noise is a LFSR-based 16383 bit long repeating pattern.
I haven't yet taken the time to find the exact LFSR formula,
but i've added it as a table.

3)We can indeed generate any looping 24 bit patterns we want:
Example: 0xFFFF00 (2/3 duty)
0x080000 (1/24 duty)
0x001403 (000000000001010000111011 or padded TIA pattern)
Byte Order check with output:
0x010203 (000000010000001000000011)
Recorded output: from left to right starts with:

Listen to those here

4) Possible pitches (using 50% duty as guide):

24 bit
000000000000111111111111:(low) 40.9746Hz
000000000000111111111111:(high) 163.8984Hz

000000111111000000111111:(low) 81.9492Hz
000000111111000000111111:(high) 327.7969Hz

000011110000111100001111:(low) 122.9238Hz
000011110000111100001111:(high) 491.6953Hz

000111000111000111000111:(low) 163.8984Hz
000111000111000111000111:(high) 655.5938Hz

001100110011001100110011:(low) 245.8477Hz
001100110011001100110011:(high) 983.3906Hz

010101010101010101010101:(low) 491.6953Hz
010101010101010101010101:(high) 1966.7813Hz

That's all well and good, but what about 24/8=3 bits?
yes that would make another pitch frequency available,
but could only play 011 and 001 (1/3 and 2/3 duty)

011011011011011011011011:(low) 327.7969Hz
011011011011011011011011:(high) 1311.1875Hz New freq!!!!

in pitch order:
000000000000111111111111:(low) 40.9746Hz MIDI:28( E2): 41.20344543
000000111111000000111111:(low) 81.9492Hz MIDI:40( E3): 82.40689087
000011110000111100001111:(low) 122.9238Hz MIDI:47( B3): 123.4708252
000000000000111111111111:(high) 163.8984Hz MIDI:52( E4): 164.8137817
000111000111000111000111:(low) 163.8984Hz MIDI:52( E4): 164.8137817
001100110011001100110011:(low) 245.8477Hz MIDI:59( B4): 246.9416504
011011011011011011011011:(low) 327.7969Hz MIDI:64( E5): 329.6275635
000000111111000000111111:(high) 327.7969Hz MIDI:64( E5): 329.6275635
010101010101010101010101:(low) 491.6953Hz MIDI:71( B5): 493.8833008
000011110000111100001111:(high) 491.6953Hz MIDI:71( B5): 493.8833008
000111000111000111000111:(high) 655.5938Hz MIDI:76( E6): 659.2551270
001100110011001100110011:(high) 983.3906Hz MIDI:83( B6): 987.7666016
011011011011011011011011:(high) 1311.1875Hz MIDI:88( E7): 1318.510254
010101010101010101010101:(high) 1966.7813Hz MIDI:95( B7): 1975.533203

So there are 10 UNIQUE 50/50 pitches, plus one 2/3 pitch, but LOTS more different _timbres_ using other patterns. The BIOS engineers only included the 10 "different" (to the ear) 50/50 ones...

At least they found a right divider/pattern length to generate a mostly tuned E5 Scale
( -9.6417 to -7.6867 cents off Equal Temperament in NTSC)
(-21.7044 to -19.7494 cents off Equal Temperament in PAL)

Just enough for a PO-LING :)
Back to possible Timbres Lets fill some timbre void shall we?
A pitch is perceived by the repetition of a pattern:

2^24= 16777216 possible timbres for 40.9746Hz and 163.898560Hz
2^12= 4096 possible timbres for 81.951134Hz and 327.796722Hz
2^8 = 256 possible timbres for 122.919807Hz and 491.694153Hz
2^6 = 64 possible timbres for 163.898621Hz and 655.593628Hz
2^4 = 16 possible timbres for 245.850220Hz and 983.390808Hz
2^3 = 8 possible timbres for 327.7969Hz and 1311.1875Hz
2^2 = 4 possible timbres for 491.696228Hz and 1966.781128Hz

case 2^2 can only really do 50/50 since 01 and 10 sounds the same
... in a monophonic console. 00 is silence; 11 is a DC offset click

case 2^4 following the previous logic can only do 25% 50% and 75% duty...

We did not map them all in chipsounds, but this could be added in the future in a more specific oscillator ...

Wednesday, September 30, 2009

VIC-20 MIDI Interface and Synth Cartridge Prototype

The VIC-20 was my first computer. You can imagine how close and personal I am with the thing. I do feel that its been unjustly historically overshadowed by the computer that followed it, especially in the audio/music scene.

Viznut and PwP's Robotic Liberation was a real blast and it probably revitalized the scene a bit.

But what we need is a musician friendly way to tackle the beast!
Three years or so ago I requested the help of François Leveillé (aka eslapion) on the Denial forum, a VERY nice electronics guru to help me construct a VIC MIDI Interface like the one HERE . So that I could concentrate on making the 6502 assembly code to read the input MIDI then drive the VIC-I chip. I got the prototype from eslapion, had the core MIDI read code done, but got side tracked by the VIC-I emu in chipsounds and figured I would pursue the project a bit later... that was two years ago.

Early this year Leif Bloomquist wanted to do a similar project, so I just lend him Francois's proto and my preliminary MIDI reading code and hes done VERY WELL with it See and hear it HERE

This is really a prototype, but I believe it is going to transform itself into something that any 8bit musician will not want to miss!

Congrats to Leif for pulling it off! I want serial #00001 ok?

Friday, September 25, 2009

New screenshots on official site

Its getting VERY VERY close to shipping now.
I just build release candidate 1 with the first bunch of presets.

New screen shots and a new "preset-show-off" excuse for a track from myself on

the official chipsounds page

Monday, September 21, 2009

Kudos to my testers


We are quite lucky to have some of you testing this thing.
You know who you are and you will be credited :)

Thanks again!

Friday, September 11, 2009

chipsounds on TV

Just prepping to relax and to watch a tv show whose music (by Éric Patenaude of Plogue), contains quite a few blips from your favorite in-dev synth :)

Listen to the intro and spot the blips!


Et Félicitations encore à toi Éric!

Friday, August 28, 2009

The kind of screenshot I fancy

I rechecked my DMG waveform synthesis yesterday, and made sure I had the range and AC Coupling emulation right according to the lowest 32Hz freq of the DMG Wave Channel.
(i dont have a pro mod DMG, I personnaly like the sound of the phones out of mine)

EDIT: For fairness to the scientific community, here are the actual samples.
2)DMG phone out

Slight tonal difference, but as herr_prof mentionned it can sound different from DMG to DMG.

More: Spectrum of DMG:

More: Spectrum of chipsounds:

You can save the files and animate them, as you will see the real DMG has some broadband noise at -90db, while chipsounds is pretty flat. Should i add extra noise samples to mix in? I seriously thought about adding them as extras

Wednesday, August 19, 2009

No fancy research, just preset making

But presets can take a while, there's just so much messing around associated with the task.

This is one of my favorite SID style arps

Friday, August 14, 2009

Testing the Wave Sequencer module

Paul Slocum's amazing ATARI synthcart beats remixed in chipsounds...

(just random pitchbend/mod wheel action on the first loop)

Thursday, August 6, 2009

uPD1771C Tester App

Hum and I thought my POKEY sounded abrasive...

Until This

Making this app (in a non-existing assembler) was such a pain, it was better be worth it. This is "one sound". Most definitely some AND/OR'ing of two bit patterns. Research goes on... yummy!

Thursday, July 30, 2009

ROM Trojaning the Super Cassette Vision


Each time I do something geeky I tell myself "now THIS is THE most geeky thing I did in my life". But whatever happens, this is a phrase I tell myself month after month working on chipsounds....

Which brings us to the wonderful topic of ROM Trojaning!
But nah, lets put things in context first. :)

The idea behind chipsounds is not to put in VSTi form what people have been doing with gameboys for nearly a decade now with LSDJ/NL. The idea is to analyze, salvage and reproduce the entire crunchy 80's aural history from oblivion.

Early 80s sound chips are unique because they were EXERCISES. Nobody (except for Yannes) had a clue of what they were doing. The engineers that were given the task to come up with a soundchip were seldom musicians. So they tried and invented as they went along. Some things worked, others were dogey, but we fell in love with them anyway. Some chips were hugely popular, others faded, in most cases it was more a question of the success of their console and games more than their sound quality.

The Epoch SCV was crushed by the famicom a mere year after its launch... However, reading about  its specs, I was instantly curious about its obscure sound generator. Some sound bytes taken from the net, including this one made one thing clear, this thing didn't just generate square waves!

So a month ago I bought a PAL version of this console (renamed YENO in France), with three ROMS which I started playing with and recording right away (to get a rough idea of the spectrum of sounds it could create).
Here is some of that.

Safe to say It definitely warranted its place in chipsounds :)

But now that's where the fun parts starts. Nearly nothing is known about its soundchip, the NEC uPD1771C. Here is a picture of mine:

The only known research comes from three talented Japanese people: Mr Enri, Mr 333 and Takeda Toshiya.

Their research provided the world with a nice emulator for the console, and tons of reverse engineering details.... including a disassembler for its obscure NEC cpu.

However, the BIOS Rom for that machine (4096 Bytes) is stored inside the main cpu (NEC D7801G or uPD7801G). And its nowhere to be found online. This BIOS code holds the key to how the console talks to the chip, and without it I would have lost many (more) days to try to extract all the raw data i need for analysis. (perhaps i would have abandoned the idea altogether) To be fair, no one can blame them for not providing the bios rom online. It is indeed is a breach of copyright law! (you wont get it from me directly either)

The Mr Henri proposed a solution to grab the rom which requires a battery backed ram cartridge and some "thing" to read it back which I have no clue is what (especially with babelengrish). However I have a fascination with the trojaning research some people, including GURU have done for the MAME/MESS projects...

So I came up with a VERY LAME solution, but one that didn't require modding my rare console, or buy yet more special equipment. I however really need to give Compute's Gazette magazine some credit for my idea (MLX) ... hehe

The idea is to transform the 4096 rom bytes in something that can be printed and humanly retyped without errors, using a checksum after each line typed.


1)I wrote a ROM for the console which spewed out the ENTIRE thing onto 30 PAL frames with a running check sum on each line. (You have to realize that there is NO DIRECT ASSEMBLER FOR A D7801G; only for D7810s which only as about 75% of the same byte code. Even a simple instructions like RET is different)

2)Placed the ROM on a W27C512 chip then onto a 16Kb Cart PCB:
(an electrically erasable eprom is handy when you do a hundred trials)

3)Recorded my hacked SCART/RBG/PAL output to a NTSC Canon MiniDV camera whose composite input -somehow- seem to accept its signal)

4)Transferred to the computer using Firewire

5)Saved each 30 frames separately. Here is the first one:

(note I really wanted full HEX code, but I had to be lazy somewhere right? .. so value=input-'0';

6)Batch-Massaged the picture a bit. (contrast mostly)

7)Tried to OCR the bloody thing for fun (I knew it wouldn't do any good).

8)Last resort... Back at work Monday morning, I used the whole company (we are 5 now) for a one hour intelligent typing challenge!

9)We got 'a' BIOS ROM:
MD5 : 635a978fd40db9a18ee44eff449fc126
SHA1 : 6e89d1227581c76441a53d605f9e324185f1da33
CRC32 : 7ac06182

Tried it in the eSCV emu... and it worked!!!!

I could NOW start the real work

I disassembled the BIOS and looked for the simple code that the console plays when pressing the pause button... this gave me exactly what I needed to know in order to generate the lists of values to be sent to the real chip in loop, (to check for waveform pattern changes, pitch limits etc).
The D1771C on that end is completely different from the typical !WR/!CS address/d0-d7 thing...
And its more like MIDI, in a sense that its a state machine of bytes. 4 bytes (with interrupt based ACK) to play a tone, and 10 bytes for a noise message. A pain.

Im still capturing waveforms and analyzing them, but I figured there was enough for a long overdue post on this blog.

Thanks for the Plogue Team. (Seb/Max had a tie... Seb finished first but had one checksum error. While Max finished last but had no errors)... I was pretty pathetic myself... Finished second with 7 errors... cant be good at everything :)

Here is the rom to CAPTURE the BIOS, (including the ASM file to modify it).

EDIT: Ive updated the zip file with more comments and example decoding code for anyone else attempting to dump the BIOS (including the NTSC one)

Friday, July 10, 2009

A new format to log them all.

While doing my Chip research I stumbled upon many different formats to store “chip music information”.

Some of them contain the full assembly code used by the original console/video game
-SID (C64 6510 assembly)
-SAP (Atari 8bit computers with POKEY chips in them)

Others only contained the actual register values WRITES along with their timestamps:
-VGM (SN, YM2612, YM2151 etc)

Both have pros and cons, But I do prefer the VGM approach, since it abstracts the chip from its processor, it allows much easier re-purposing of the music data streams. For instance, in order to use a direct PIC interface, parallel port, arduino, what-have-you to play the data back on a real chip.

For my continuing analysis and cross checking, I need to do bunch of tests on chip register data (especially for SID and POKEY).
I also need to edit entries, filter some registers, add comments to specific writes, play the result, record, analyze in a sound editor, using various home made tools.

I usually also had to type or procedurally generate long lists of chip register commands in order to hear how some chips behave under specific scenarios, and also to record a long series of chromatic notes for a sampler mapping (SID combined waveforms in chipsounds using SFZ mapping) etc, without having to delve into this or that system's native assembly each time. (I had to do that too many times that I dont miss it much)

I thought of using the VGM format and extending it but:

1)Its binary only
2)Only logs writes at 44100 Hz, (while some emulators run at full master clock of 3.57MHz or more, so you DO lose information)
3)Its been patched a lot through revisions, and is hard to maintain.
4)NIH :)

So really I just went with the simplest thing I could come up with.
VGMX!! (Extended VGM or VGM XML) .. how original

The format is very simple it doesn't require a DTD (especially since most of us use modified TinyXML source trees right?)
It goes something like this:

Note: clock and rate are two different things. Clock is the actual oscillator frequency feeding the chip, while rate is the time base for the writes. (emulator timebase in many case)

This is very preliminary, but I hope that this interest somebody.

In closing here are a few examples of real files and rendered results from my protoboard+pic setup

1)7800 Ballblazer (VGMX) (MP3)

2)C64 Great Gianna Sisters Doom (VGMX) (MP3)

Friday, June 19, 2009

Wednesday, June 17, 2009

Sequential Circuits Model 64 Sequencer

(sorry for the old photo)

I dumped the contained EPROM (which works in Vice), including PCB pictures HERE. HOWEVER. Unless someones emulates the onboard ACIA and PIA chips in a Vice ad-don, this is really just an exercise in digital archeology.

EDIT (2013) This cartridge has been used by the MMA to showcase the enduring power of the MIDI Standard.

more info:

Friday, June 12, 2009

Wednesday, June 10, 2009

Evolution of sucking

Choice to desolder chips:

1)5$ (and millions of curses)

2)20$ (less curses but a lot of frustration)

3)200$ (And worth every penny.)

Saturday, May 30, 2009

CMS (Dual Philips SAA 1099) Recordings

Here's a rarity, carefully sampled for you.

Before the soundblaster, there was the Creative Music System (CMS) (AKA GameBlaster), which contained two Philips SAA 1099 chips.
It pretty much bombed since the OPL2/Adlib was all the rage at that point.

Nevertheless, the thing has some charm. Here are two recordings made on a SB 2.0 CT1350A (with the SAA chips factory installed as legacy option)


More can be found here

Friday, May 29, 2009

8 hours of (why would I buy a flash cart?) later


ROM Test:

Note1: this is a bare cart with no battery backup or mapper. Will only run 256 kBit /32KB roms ... which is more than I need for my tests.

Note2: the quote should read please dont _PUT_ your wires in my brain.

Sunday, May 24, 2009

Total Stereo separation ATARI 2600 Jr Mod

There are various NTSC 2600 RCA A/V mods out there. Four years ago (note WAAAAAY before I thought of making chipsounds) there were a only a few that I didn't really like since either the mod was mono, or stereo but with huge L+R bleed that didn't really cut it for me.

Four years ago, I also had about zero electronics knowledge, so I hacked the most horrible thing which you can see here:

Instead of feeding the same voltage source to both channels, like in that schematic, I modded it by added TWO 7805's onto an external duck-taped protoboard onto the console itself.
Each of them "feeding" DC component into one of the two TIA audio outputs.
As always I try to bypass AC coupled electrolytic caps - however dangerous this is - to tap in closer to the original signal as possible (in hindsight I should have buffered the signals as well with an opamp).
However ugly it is, it works perfectly for my own taste.

Whats cool about stereo mods? Well to completely isolate effects used by programmers, remember that two channels is not much.

Pacman's horrible intro "tune"
ET's Landing

Notice the TOTAL absence of Background noise. (mp3 encoding did the worst)

Note#2: The Atari Cartridge PCB is from Pixels Past. Build to use 27128 EPROMS (see previous). So fun code can be easily ran and recorded. Dont worry I do have original game carts for Pacman and ET . Like who doesnt.

Friday, May 15, 2009

We had Joy we had fun, We had EPROMs in the sun.

Yes, am all aware that there are proper tools to do this "professionally". But this is way cooler. One and a half day suffice to erase them to 0xFF's.

Way faster than it used to be in the 70's? (debatable), but I otherwise DO miss the ozone layer.

NOTE from this site
"UV-C radiation, which is lethal, is emitted at wavelengths of 200-280 nm. Fortunately, UV-C is completely absorbed by atmospheric ozone and oxygen. Even with severe ozone reduction, UV-C radiation would still be absorbed by the remaining ozone."

EPROMs require UV-C's (according to wikipedia) ... hum .. anyway, 1.5 day to wipe my 27128's is an actual observation.
I have got 20 or so 271282's (salvaged from an arcade board), so this erasing delay is a non issue for my Console/Cartridge development.

Saturday, May 9, 2009

The weight in gold of obsolescence

Gold price is currently 900 USD an ounce. It is one of the only safe investing bets for the current economy... However that's bad news for you and me.

Last Friday I took off early and indulged in some long overdue electronic junk treasure hunt. Visited two of my best spots in Montreal pcrecycle and 1800parts.

Whats funny in fact is that I was looking for a device I had myself thrown away 10 years ago. The original Sound Blaster 1.0. Who would have thought that I would now need an obscure chip from this board .. not talking about the YM3812 (OPL2) – but a SAA 1099 which would have been, I think very easy to add to chipsounds, especially when i could just compile a little C program in borland DOS compiler and make it scream from its ISA slot in my 486 for my now routine steps of noise pattern and bit mixing analysis.

Only two years ago I remember that place had a HUGE box of ISA audiocards, filled with valuable chiptune goodies on them (got about 15 boards with OPL3 chips on them, inducing the pretty rare Adlib Gold, and (even rarer) a Microsoft Windows SOUNDSYSTEM ... wait did you see that properly? Microsoft branded SOUND CARD!!!

But now all that is.... now nowhere to be found, “Went to Africa a long time ago!”.


The later shop owner gave me a odd look, and said -off the bat-, all that went to Germany a while ago (according to him the current biggest player in large-scale computer recycling) Why do we keep hearing about China all the time?... media fascination I guess.

I also Keep Wondering whether or not my obsession with “old junk” is (even remotely) an eco-statement, or if its just retarded geeky nostalgia. Whatever I buy will end up in recycling anyway.

So I have a look around, try to listen to all his stuff about bad customers and the provincial difference in police behavior in a merchant/client dispute.... I just kept obsessing about the damn cards.

Q"Are you SURE you don't have a dump with old ISA cards in them"
A"well each of them is worth 3$ in gold so you would need to give me more, like 5$ each"
Q"O...K... that's not really a problem"

Two stories higher (guy has LOADS of server/printer stuff)
found a container headed for recycling, which I spent 30 minutes digging through.
A bunch of them, mostly crappy Vibra 16 Sound Blasters, but nothing as old as an 8bit SB 1.0 card. However, here's what I scored:

Just couldn't resist its beauty. Also a Gravis GF1 chip is hard to come by, and may become handy in say chipsounds 5.0 ;)

But now with all the children suffering in this sad world, why do I imagine all those SID chips melting in Aqua Regia????

(anyone with a SB1.0 card that wants a free chipsounds license just send me a shout)
EDIT: I just won a rare CT1350A Stuffed with two SAA chips!

Monday, April 27, 2009

SIDs through the ages

Here is a glimpse of some of my collected chips.

While the first one on this picture is dated 83, ive seen a few 1982 ones.
(i must have got one somewhere, probably broken in a bin :)
So they span roughly 10 years in production, in various places in the world
Phillipines, Korea, Hong Kong.

Its hard to find perfectly good working pre-8580 SID chips, as the vast majority of them all seem to have defects in one area or another due to age or power on/off cycle stress. (higher heat dissipation?)

Sometimes its missing voices, missing noises, filter nearly silent, etc.

I try to capture waveforms and run tests the best I can with them. I've got
a perfectly running 6581R4 AR that I baby everyday (not pictured here due to its ugly "blurred in white goo" look)

Tuesday, April 14, 2009

Pokeys under Limestone

Few people know that there are literally thousands of Pokey Chips stored in a limestone cave somewhere in Kansas City. A liquidation company bought truckloads of mint unopened ATARI carts, and among these is the ATARI 7800 version of Ballblazer.

While I didn't feel like ripping apart a perfectly good mint unopened box, I nevertheless scourged through my cartridge collection and opened mine for fun. The third photo shows the desoldered Pokey chip, under the one I got NOS from a dealer (note the manufacturing dates - 5 years apart).

Next I placed the salvaged '87 pokey on my protoboard and played it the Ballblazer title track through it. Love those fat basses.

NOTE1, The ATARI 400/800 (home computer) has a native pokey chip, and the Ballblazer title sounds exactly (to my ears) as it does on the 7800 Cart, its logical to assume that the LucarFilm Games authors didn't want to alter their composition by only using 7800's native TIA chip... but did it justify adding a chip to the cart which would boost production costs a lot? if someone has some info on this i would be curious to know.

NOTE2, the other 7800 Game cart that contained a Pokey chip is Commando, but its not available in the cave.

Tuesday, April 7, 2009

That ____ VIC-I Noise Pattern

My VIC emulation just gave me a good scare yesterday as I suddenly realized I might have overlooked a crucial detail. Time to get the offwhite box out again and sniff the audio pin's output for something....

OK! I'm convinced my Emulation was right... oh well... better triple check everything

Saturday, April 4, 2009

New Acquisition

Just received my latest toy. A PAL Soundic MPT-03 Console (Clone of an Emerson Arcadia 2001 )

And just inside, a socketed Ceramic Signetics UVI 2637 ... Already got the 9Bit noise pattern from it (and surprise its the SAME as TIA Distortion 8!). But some games generate odd mixed patterns that i'll surely be investigating in the future.

Monday, March 30, 2009

Bug or Feature?


Just having some fun with my dev build of chipsounds trying out my new Pokey oscillator code. Here we have the eternal programmer question...


Safe to say, chipsounds will contain some extra "note quite accurate" fake-chips in there.

Sunday, March 22, 2009

3 Brothers

What do you do when you want to lower your stress level? Solder of course :)

I wanted to free my breadboards and "stabilise" my test suite against hardware, so i spent a few hours doing those two new boards.

Thursday, March 12, 2009

Pokey Trials

Here's a photo of my current breadboard for my Pokey. Just missing a clock divider hooked to my 3.57Mhz crystal to get the desired 1.79Mhz. (doing alright with a 2.0 MHz one at the moment for diagnostics).

Pokey is odd, really. and a challenge to integrate in my current Synthesizer code. All bit patterns (or distortions) vary across frequencies and even sometimes retriggering. This seems to be due to the various Pokey internal sub clocks not keeping synch at all time (frequency divider vs 5bit poly vs 4bit poly vs 9/17bit poly).. to make matters worse, there is also various tweaks to the frequency divider (2 channel mode vs 4 channel mode, etc).

Heres a VERY HARSH sound example of 4 different triggerings of a 9bit noise pattern. warning., this is GRITTY! (the last one is more musical, which is interresting)

My goal is to find the best solution to give the user the widest palette of variations and randomness, representative of someone actually programming a song on a a800 (contemporary tracker writers ares still going mad with those sync problems...)

Saturday, February 28, 2009

Small update

Sync Buzzer is DONE! ...
Good thing is that new oscillator code opens the door to tons of other cool new sounds... but you will just have to wait until the demos are out!!!

Saturday, February 14, 2009

More AY-3-8910 and YM2149F hacking

One of the last oscillator code bits I need to do is to replicate the Envelope buzzer (and Sync Buzzer) techniques used on those chips.

So again, like with all facets of this project, i just HAD to get my hands dirty!
I used a bread board to experiment (left), and then made a protoboard(right) that proves a bit less flaky than the original. (and well i needed my breadboards for some other stuff)

All my boards now follow a simple setup where I can talk to any 8 bit chips using a serial line (74hc595) and a few chip select lines. I can use either the an Atmel/Arduino/MIDIBoxCore as an interface between the 8bit chip and the PC running Bidule.

It goes without saying that also made a special MIDI encoding for every chip I have on external boards, so that microcontroller code modifications to drive each new chip was minimal (there are limits to my masochistic tendencies)

In short: I can - direct in Bidule- just "type in" the register changes that i need for the chip and then feed the audio back in bidule for analysis and recording... many GB worth of that in fact.

I can also, directly in C++, code MIDI to "Chip register language" transforms to actually get some live musical results out of them.

More boards and pictures soon... Maybe my 1U RACK'ed NES is next :)

Monday, January 12, 2009

One by One ... SN76489AN

The SN76489AN is a very basic chip, probably second to the VIC-I. Even though the AY-3-8910 is a tad bit more complex (the envelopes), in many places you will read both the SN and the AY described as "PSG"s or programmable sound generator.
  • Basic 50% duty cycle square
  • "1/15" duty "cyclic noise, (rarely used)
  • 32767 bit long Noise pattern. (different on chip variations)
I was lucky to discover that the 32k-1 bit pattern is different on the SN94624N (used in some TI/99's), and Chip sounds includes both patterns exactly replicated.

That chip was used in way too many computers, consoles and Arcade machines to list, probably due to its simplicity and price... It was however included as a discreet chip on my first video game console, the ColecoVision.
Just a little site to collect my findings and describe my experiments in developing this product.
Already 3 years of work have passed since I started this and first time I actually write about it.
The reason is, well one is always afraid of doing some work for nothing, especially when the concept is pretty bold... to make the Chip Tune VSTi to cover them all.

NAMM 2009 is in two days.
Still things to sort out.... just in the demo.

So its all blips and basic square wavs right? Afraid not!