Rob Hubbard (NES Driver)

From Video Game Music Preservation Foundation Wiki
Revision as of 14:07, 17 July 2018 by TheAlmightyGuru (talk | contribs) (Games)
Jump to: navigation, search
Rob Hubbard
Released 1990-09-??
Programmers Rob Hubbard
Language 6502 Assembly
Formats Unknown

Rob Hubbard NES is the unofficial name of the NES sound driver that Rob Hubbard created for the Nintendo Entertainment System. His sound driver was used in three games; The Immortal, Skate or Die 2: The Search for Double Trouble, and Chuck Yeager's Air Combat, which was not released. Rob Hubbard's driver utilized the RP2A03. In a similar fashion to Sunsoft, Rob's driver utilized a bass in the NES' DPCM channel via a sawtooth wave. It is unknown where the sawtooth wave originated from, or if Rob created it completely by himself.

According to Hubbard, he had to code his sound driver in 6502 assembly, and wrote the music and sound effects in assembly, in a similar fashion to the Commodore and Atari computers he worked on.

Release History

The game was first released in the game Skate or Die 2: The Search for Double Trouble, which was released on September of 1990. Then The Immortal, which was released two months later used his driver. Then years later, an unreleased game surfaced called Chuck Yeager's Air Combat, an NES port of the popular DOS game (also composed by Hubbard), which used his driver. His driver was only used in North American exclusive games.


Rob Hubbard's NES sound driver outputs to the RP2A03, all channels, including the DPCM channel as a bass are used, similar to Sunsoft.


Released Title Sample
1990-09-?? Skate or Die 2: The Search for Double Trouble (NES)
1990-11-?? The Immortal (NES)
Unreleased Chuck Yeager's Air Combat (NES)


It is unknown what native formats Rob Hubbard used for his music, but, like all NES games, the machine code can be logged to NSF.

Frequency Registers

B-6 = 1C
A#6 = 1D
A-6 = 1F
G#6 = 21
G-6 = 23
F#6 = 25
F-6 = 27
E-6 = 2A
D#6 = 2C
D-6 = 2F
C#6 = 32
C-6 = 35
B-5 = 38
A#5 = 3B
A-5 = 3F
G#5 = 43
G-5 = 47
F#5 = 4B
F-5 = 4F
E-5 = 54
D#5 = 59
D-5 = 5F
C#5 = 64
C-5 = 6A
B-4 = 71
A#4 = 77
A-4 = 7E
G#4 = 86
G-4 = 8E
F#4 = 97
F-4 = 9F
E-4 = A9
D#4 = B3
D-4 = BE
C#4 = C9
C-4 = D5
B-3 = E2
A#3 = EF
A-3 = FD
G#3 = 10D
G-3 = 11D
F#3 = 12E
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 = 2FB
G#2 = 21A
G-2 = 23A
F#2 = 25C
F-2 = 27F
E-2 = 2A5
D#2 = 2CE
D-2 = 3F8
C#2 = 326
C-2 = 356
B-1 = 389
A#1 = 3BE
A-1 = 4F7
G#1 = 434
G-1 = 474
F#1 = 4B8
F-1 = 4FF
E-1 = 54B
D#1 = 59C
D-1 = 5F1
C#1 = 64C
C-1 = 6AC


The frequency registers can be found in the ROMs at these addresses. Modifying these will change the pitch of the note.

Chuck Yeager's Air Combat: $03B4BB-$03B5BA
Immortal: $09DA-$0A69
Skate or Die 2: $014817-$0148A6