Neil Baldwin (NES Driver)

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
Neil Baldwin
Released 1990-02-??
Programmers Neil Baldwin
Language 6502 Assembly
Formats Unknown

Neil Baldwin is the unofficial name of the NES sound driver that Neil Baldwin created for the Nintendo Entertainment System. According to Neil, he had help from Tim Rogers in creating the driver. According to Neil, it wasn't difficult making an NES sound driver, but didn't like that you couldn't do as much with the chip as the SID.

Neil explained on his website about creating the music and sound effects for the game Magician:

This is where it all began. I was one of the founders of Eurocom (I'm still a Director there but that's a whole other story) and this was our first game together on the NES (or "Famicom" as we knew it: we brought the consoles back from Japan when we went out to visit our publisher, Taxan). We had no development hardware just half-a-dozen Famicom consoles and a badly photocopied hardware specification that was 99% written in Japanese! What we lacked in resources, we clearly made up for in boundless determination.

Luckily for us, our parent company (at the time) employed the skills of a really talented electronics engineer, Richard Alton, who managed to reverse engineer (and build) some flash-ROM cartridges and together with an old 6502 editor/assembler, "PDS", we had ourselves a rudimentary development kit!

I remember myself and Tim Rogers (now Technical Director at Eurocom) visiting the languages department at Sheffield University with the photocopied Japanese NES manual and with the help of two Japanese girls we deciphered a lot of the technical information. They're uncredited in the history of Eurocom but looking back, I'm not quite sure how we'd have progressed without their help!

I'd written my own music/audio drivers for the C64 and so, with the invaluable help of Tim Rogers, I set about trying to do the same for the NES. One thing I got to quickly realise was how utterly unsophisticated the NES was compared to the C64 and began to understand why most NES music sounded the way it did - you just couldn't do much else with it!

I made quite a lot of use of the delta-modulation channel in 'Magician' though it was the only time I ever did. I can't actually remember why. I'd imagine that it was because the samples themselves would use up so much ROM space that it would be considered a luxury item.

So eventually we had a music driver. There were no tools to speak of so everything was entered as numbers in the assembler/editor. Later on I turned the numbers for command codes into macros to make entering and reading the sequences of notes a little easier but that's as sophisticated as it got. I worked out tunes on a little Yamaha keyboard and typed in the pitches and durations. Often I'd work out timings on some squared graph paper, mostly by trial and error.

Even after all these years, Baldwin has kept the source code to his NES sound driver, but has not released it.

Release History

The first game to use Neil Baldwin's driver was Magician. The last game to use it was The Jungle Book, which was released as late as 1994. Dropzone, which also used the driver, was exclusively released in Europe.

The second game to use the driver was James Bond Jr. According to Neil, he went back to his Commodore 64-composing ways by creating delay effects using one, instead of two channels. He also had the Triangle channel play in conjunction with the Noise channel for better percussion. Neil says that he was trying to simulate the Roland TR-808 drumkit:

Something else that I dabbled with in this track (and a few others in this project) was trying to not only synthesize basic drums like kick, snare and hi-hats but also 808-sounding percussion/toms. It sounds a bit too busy in this particular track but I think it reasonably effective. Actually something that's just struck me about all of the tracks in this project is that they could all do with being slowed down ever-so-slightly, they sound a bit rushed. Problem was, I never had any sort of tempo control when typing/editing the music sequences and so it would've been a tedious job to go through and slightly alter all the note durations!

When Neil arranged Bare Necessities for the NES game The Jungle Book, he worked hard to make the arpeggio chords sound legitimate, putting the notes in the correct order.


Neil Baldwin's NES sound driver outputs to the RP2A03 in North America/Japan and the RP2A07 in Europe. His sound driver, like many, didn't use the DPCM channel (except Magician), but it used the triangle channel not only for bass, but for associating percussion with the noise channel. His driver, like many European composers, utilized arpeggios.


Released Title Sample
1990-02-?? Magician (NES)
1991-11-?? James Bond Jr. (NES)
1992-??-?? Dropzone (NES)
1992-04-?? Lethal Weapon (NES)
1992-06-?? Ferrari Grand Prix Challenge (NES)
1994-08-25 The Jungle Book (NES)
Unreleased Erik the Viking (NES)
Unreleased Hero Quest (NES)


Frequency Registers

B-6 = 1B
A#6 = 1C
A-6 = 1E
G#6 = 20
G-6 = 22
F#6 = 24
F-6 = 27
E-6 = 29
D#6 = 2B
D-6 = 2E
C#6 = 31
C-6 = 34
B-5 = 37
A#5 = 3A
A-5 = 3E
G#5 = 42
G-5 = 46
F#5 = 4A
F-5 = 4F
E-5 = 53
D#5 = 58
D-5 = 5E
C#5 = 63
C-5 = 69
B-4 = 70
A#4 = 76
A-4 = 7E
G#4 = 85
G-4 = 8D
F#4 = 96
F-4 = 9F
E-4 = A8
D#4 = B2
D-4 = BD
C#4 = C8
C-4 = D4
B-3 = E1
A#3 = EE
A-3 = FD
G#3 = 10C
G-3 = 11C
F#3 = 12D
F-3 = 13F
E-3 = 152
D#3 = 167
D-3 = 17C
C#3 = 193
C-3 = 1AB
B-2 = 1C4
A#2 = 1DF
A-2 = 1FC
G#2 = 21A
G-2 = 23C
F#2 = 25C
F-2 = 280
E-2 = 2A6
D#2 = 2CF
D-2 = 2F9
C#2 = 327
C-2 = 357
B-1 = 389
A#1 = 3BF
A-1 = 3F8
G#1 = 435
G-1 = 475
F#1 = 4B9
F-1 = 501
E-1 = 54D
D#1 = 59E
D-1 = 5F3
C#1 = 64E
C-1 = 6AE
B-0 = 720
A#0 = 780
A-0 = 7FF

There are two versions of the driver. Magician and James Bond Jr. use the first revision. In the first version, the low bytes are programmed first with the high bytes being programmed last. In his second driver, the high bytes are not present. Here is the code for the frequency data for the first version of his sound driver:

AE 4E F3 9E 4D 01 B9 75 35 F8 BF 89 57 27 F9 CF
A6 80 5C 3C 1A FC DF C4 AB 93 7C 67 52 3F 2D 1C
0C FD EE E1 D4 C8 BD B2 A8 9F 96 8D 85 7E 76 70
69 63 5E 58 53 4F 4A 46 42 3E 3A 37 34 31 2E 2B
29 27 24 22 20 1E 1C 1B 00 07 07 07 06 06 05 05
05 05 04 04 04 03 03 03 03 03 02 02 02 02 02 02
02 01 01 01 01 01 01 01 01 01 01 01 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00