• entries
  • comments
  • views

About this blog

MB-TIA Cartridge

Entries in this blog

Hi everyone I’m back and my project too.

It was not easy. Not because of the technical issues, just bad karma.

In 2011/2012 I made a working firmware and a manager under Max/MSP.

Because of personal reasons, I put the project on hold.

End of 2012, I received a message from Eptheca who asked me the status of the project.

With his help we decided to print 3 PCB’s. Unfortunately during this period, the hard drive of my computer suddenly decided to leave me, and I lost all my work: ((

I sent the drive to Shanghai to try to recover my data, but of course my disc was one of the non-recoverable 10% (always this bad karma).

So now we had the box and the electronics but nothing to put in it.

In February I decided to rewrite everything but it took me some time.



We've now got a new firmware and the application to manage the box.

I am inspired by the version 1 MB-SID.

I kept all the features of this engine.

I improved the management of banks, I dedicated two envelopes to the voice of the TIA which is free, and a few small details that might please you.

Here is the features of it:

  • 1 dedicated envelope for each voices(so 2) with optional non-linear curve and Sync which can be assigned to Amplitude and pitch. 3 specifics Mode to mix Modulation matrix and this env
    Env+Mods, Env*Mods, Env+(Env*Mods).
  • 2 additional envelopes with optional non-linear curve and Sync which can be assigned to Amplitude and pitch.
  • 4 additional LFOs with different waveforms and Sync which can be assigned to Amplitude and pitch.
  • Pitch Bender
  • Portamento/Glide function with Optional "Constant Time Slide".
  • Delays
  • 1 Arpeggiator for each voice(so 2) with optional Sync.
  • Poly, Mono and Legato Mode
  • Separate keyboard zones for each voice (key splitting) allows to play voices separately
  • Extended Mode for keys(all note reponse) or non extended with offset and length.
  • 1 velocity response for each voices (so 2) with optional CC assignment
  • Free controller assignments to Modulation Wheel and Aftertouch
  • LFOs, Envelopes, Arpeggios optionally syncable via external MIDI clock (one for each;)
  • BankStick support (4 banks of 128 sound patches per stick, up to 8 can be connected) so 32 banks.
  • And much more.

    Coming soon:

    • wave and CC sequences which allow more percussive sounds (Wavetables) with dedicated banks.
    • Drum or Fx Kit Presets with dedicated banks.
    • 8 Analog I/O
    • 4bit sampling ;)
    • Atari 2600 Joystick and Video touch pad support.

    There's no CS on the cartridge version, but there's enough room in FW to add it. If someone wants to create it, you are welcome. This firmware is only for 18f4685.

    You can add MB-Link too if you need it, PORTA.0-7 and PORTB.0-3 share 8 I/O on the AUX connector.

    No CS; but I designed a Max/MSP Application (windows and Mac compatible):

    And it has iDevice support(sorry for those who boycott Apple products):

    I'm trying to finish a Max4Live version, with a common file between both applications that will retrieve the names of banks, patches and all parameters without having to open the input of the midi track and make a CC request (there's no SysEx in Ableton Live).

    Now i suppose you want to hear it:

    Listen on Soundcloud.com

    Voilà!!! :smile:


  • PIC 18F4685.
  • Leds Meter for each channel.
  • In Circuit programming (bootloader).
  • Jumper for select PortA Pin0-7 or PortA Pin4-7 + PortB0-3 on DB15 connector. (Future extension ex: old Joystick).
  • Midi I/O with leds.
  • Two Audio output with jumper selection, depends on TIA chip.


Firmware is working.

Manager is ready.


  • 2 dedicated envelopes with optional non-linear curve for each voice, which can be assigned to Pitch and Volume
  • 2 additional envelopes with optional non-linear curve which can be assigned to Pitch and Volume
  • 4 additional LFOs with different waveforms which can be assigned to Pitch and Volume
  • Pitch Bender
  • Portamento with optional "Constant Time Glide" function
  • Delays
  • Arpeggiator
  • Poly, Mono, Multi and Legato Mode
  • Separate keyboard zones for each voice (key splitting) allows to play voices separately
  • Free controller assignments to Modulation Velocity AUD0, Velocity AUD1, Wheel and Aftertouch
  • Wave and CC sequences which allow more percussive sounds
  • 2 Wavetables, 3 modes (Single 1x32, double 2x16 and Kit)
  • In Kit Mode Wavetable is used as Key mapping table
  • The wavetable sequencer can be combined with the arpeggiator in order to realize complex textures
  • LFOs, Envelopes, Wavetables, Arpeggios optionally syncable via external MIDI clock
  • OS independent MaxMsp Manager
  • BankStick support (128 sound patches per stick, up to 2 are internally connected)

MaxMsp Manager:


Here preset(patch) is 'Drum Kit 1'

- Voice Mode : Poly, max 2 notes at a time.

- Wavetable Mode : Kit, one note / one sound.

'Drum Kit 1' Sound demo:

Only one MIDI track, five differents sounds, for this drum pattern.

The track starts with this five sounds.

Next part: MB-TIA Cartridge. Final PCB.

The Television Interface Adaptor(TIA) is the custom chip that is the heart of the Atari 2600

game console, generating the screen display, sound effects, and reading input controller.

I/O Pin:

blogentry-7584-037016800 1306771932_thum

Clock and CPU Synchronization:

The 3.58 MHz oscillator (OSC Pin) also clocks a divide by three counter on this chip whose output (1.19 Mhz) is buffered to drive an output pin called 00.

This pin provides the input phase zero clock to the microprocessor which then produces the system 02 clock (1.19 Mhz).

Thus, the final input clock is 02, you've just got to bypass CPU, pin 00 connected to pin 02 and reproduce the OSC stage.

There's two types of OSC one for the NTSC (3,58Mhz) and another for PAL/Secam (3,54MHz) according to your country video norm.

The frequency of clock running has a direct bearing on the sound generator. In PAL, sounds will drop a little in pitch (frequency) because of a slower crystal clock.

Audio Output:

Two independent audio generating circuits are included, each with programmable frequency, noise content, and volume control registers.

2 voices, named AUD0 and AUD1.

With a TIA in NTSC version, each voice has its output (pin 12 & 13).

In PAL version, the two voices are added to the same output (pin 13), pin 12 is used for carrier frequency modulation.

So rather choose a NTSC version if you want 2 separate outputs.


Each audio circuit consists of parts described below:

blogentry-7584-048431100 1306932815_thum

Frequency Select:

Clock pulses (at approximately 30 KHz) from the horizontal sync counter pass through a divide by N circuit which is controlled by the output code from a five bit frequency register (AUDF).

This register can be loaded (written) by the microprocessor at any time, and causes the 30 KHz clocks to be divided by 1 (code 00000) through 32 (code 11111).

This produces pulses that are digitally adjustable from approximately 30 KHz to 1 KHz and are used to clock the noise-tone generator.

Noise-Tone Generator:

This circuit contains a nine bit shift counter which may be controlled by the output code from a four bit audio control register(AUDC), and is clocked by the frequency select circuit.

The control register can be loaded by the microprocessor at any time, and selects different shift counter feedback taps and count lengths to produce a variety of noise and tone qualities.

Volume Select:

The shift counter output is used to drive the audio output pad through four driver transistors that are graduated in size.

Each transistor is twice as large as the previous one and is enable by one bit from the audio volume register (AUDV).

This audio volume register may be loaded by the microprocessor at any time. As binary codes 0 through 15 are loaded, the pad drive transistors are enabled in a binary sequence.

The shift counter output therefore can pull down on the audio output pad with 16 selectable impedance levels.


There are 44 8-bit registers whose addresses are coded on 6 bits.

blogentry-7584-042552000 1306934083_thum

AUDx registers adresses start @ 0x15







So we need 4 bits of address only. And 5 bits max for data (frequency).

Data bits 7,6,5 and Adress bit 6 are connected to ground. Adress bit 5 to 5v.

Frequency registers AUDFx:

This registers are limited to 32 values​​ (5 bits), and need to be reversed!

blogentry-7584-082933500 1306934946_thum

Control registers AUDCx:

These are 16 in number (4 bits). But some are the same or are silent.

So only 10 waveforms are available.

blogentry-7584-055445500 1306936389_thum

Volume registers AUDVx:

16 levels (4 bits).

blogentry-7584-025908300 1306936759_thum

TIA Schematics and Documentation.

Schematic for MBHP Platform, Thorsten style:


Next part: MB-TIA Cartridge. Max Manager Software and Drum Kit Sound Demo.

I'm probably a bit nostalgic for a time I played the game console in the living room of my parent.

Need electronic sounds that have traumatized my childhood.

The Atari 2600.

I started this project 5 years ago. The first prototype I built was too big and too expensive to manufacture and not programmed into MIOS:

blogentry-7584-085643900 1306518242_thum

A friend of mine recently reminded me that I had promised to make one for him(another nostalgic).

So I resumed work in late 2010, after checking that no one already did.

The first question was whether I was able to program it into MIOS.

I tried and succeeded. Then I searched for housing. Why not in a game cartridge of the era!!!

So i try it too. AND it fits in the box.

blogentry-7584-030337000 1306519329_thum

The 2010 Proto

blogentry-7584-096583200 1306519437_thum

next: The TIA (Television Interface Adapter) Atari chip.