Graphic Research (NES Driver)

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
Graphic Research
Released 1988-05-27
Programmers Yasuyuki Hamada, Fumito Tamayama
Language 6502 Assembly
Formats Unknown

Graphic Research is an unofficial name for the sound driver used at Graphic Research. The programmers of the driver should be contacted for an official title.

It was originally programmed by Yasuyuki "Hyakumangoku" Hamada, but later reprogrammed by Fumito Tamayama, both of which composed music for the company.

The driver originally required music to be input in 6502 assembly macros, but was later modified to use Music Macro Language.

Release History

There were 2 versions of the driver. The first version was programmed by Yasuyuki Hamada, and the first game to use it was Shogun. With the exception of Widget, all of the games that use this driver were released exclusively in Japan. Secret Ties was set to be released in America, but the game was never released.

Output

The game outputs to the RP2A03. It does not use the DPCM channel. The sound driver also uses the triangle channel along with the noise channel to create synth drum effects, similar to the Roland MT-32's drumkit.

Games

Released Title Sample Version
1988-05-27 Shogun (FC) (将軍) 1
1988-09-21 Kujaku Ou (FC) (孔雀王) 1
1989-08-25 Captain Ed (FC) (キャプテンえど) 1
1989-11-24 Vegas Connection: Casino Yori Ai no Komete (FC) (ベガスコネクション カジノより愛をこめて) 2
1989-12-15 Famicom Doubutsu Seitai Zukan! Katte ni Shirokuma: Mori o Sukue no Maki! (FC) (【かってにシロクマ】もりをすくえのまき) 1
1990-05-25 Baken Hisshou Gaku: Gate In (FC) (馬券必勝学 ゲートイン) 2
1991-07-05 Baseball Fighter (FC) (ベースボール・ファイター) 2
1991-12-20 Asmik Kun Land (FC) (アスミッくんランド) 2
1992-??-?? Widget (NES)
2
1993-06-19 J-League Fighting Soccer: The King of Ace Strikers (FC) (Jリーグ ファイティングサッカー) 2
1994-05-27 J-League Winning Goal (FC) (Jリーグ ウィニングゴール) 2
Unreleased Secret Ties (NES) 2

Technical

Frequency Registers

Version 1

The first version of the driver only has the first octave written, and is programmed to divide each note's hex values by 2 to achieve a higher octave. Note that the NES cannot play notes under A-0.

B-0 = 714
A#0 = 780
A-0 = 7F2
G#0 = 86B
G-0 = 8EB
F#0 = 973
F-0 = A02
E-0 = A9B
D#0 = B3C
D-0 = BE7
C#0 = C9C
C-0 = D5D

Version 2

Fumito's revision of the driver is programmed for each octave. Note that the NES cannot play notes under A-0.

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 = 712
A#0 = 77E
A-0 = 7F0
G#0 = 86A
G-0 = 8EA
F#0 = 972
F-0 = A02
E-0 = A9A
D#0 = B3C
D-0 = BE6
C#0 = C9C
C-0 = D5C
B-  = E24
A#  = EFC
A-  = FE0
G#  = 10D4
G-  = 11D4
F#  = 12E4
F-  = 1404
E-  = 1534
D#  = 1678
D-  = 17CC
C#  = 1938
C-  = 1AB8

However, the frequencies aren't programmed in note pitch order (Example: lowest note to highest note). Instead, it is written in order of note + octave. For example:

B8 1A 5C 0D AE 06 57 03 AB 01 D4 00 69 00 34 00
38 19 9C 0C 4E 06 27 03 93 01 C8 00 63 00 31 00
CC 17 E6 0B F3 05 F9 02 7C 01 BD 00 5E 00 2E 00 
78 16 3C 0B 9E 05 CF 02 67 01 B2 00 58 00 2B 00
34 15 9A 0A 4D 05 A6 02 52 01 A8 00 53 00 29 00
04 14 02 0A 01 05 80 02 3F 01 9F 00 4F 00 27 00
E4 12 72 09 B9 04 5C 02 2D 01 96 00 4A 00 24 00
D4 11 EA 08 75 04 3C 02 1C 01 8D 00 46 00 22 00
D4 10 6A 08 35 04 1A 02 0C 01 85 00 42 00 20 00
E0 0F F0 07 F8 03 FC 01 FD 00 7E 00 3E 00 1E 00
FC 0E 7E 07 BF 03 DF 01 EE 00 76 00 3A 00 1C 00
24 0E 12 07 89 03 C4 01 E1 00 70 00 37 00 1B 00

The notes would equate to the following:
(Note: the X represents the octave under the 0th octave.)

C-X C-0 C-1 C-2 C-3 C-4 C-5 C-6
C#X C#0 C#1 C#2 C#3 C#4 C#5 C#6
D#X D#0 D#1 D#2 D#3 D#4 D#5 D#6
E-X E-0 E-1 E-2 E-3 E-4 E-5 E-6
F-X F-0 F-1 F-2 F-3 F-4 F-5 F-6
F#X F#0 F#1 F#2 F#3 F#4 F#5 F#6
G-X G-0 G-1 G-2 G-3 G-4 G-5 G-6
G#X G#0 G#1 G#2 G#3 G#4 G#5 G#6
A-X A-0 A-1 A-2 A-3 A-4 A-5 A-6
A#X A#0 A#1 A#2 A#3 A#4 A#5 A#6
B-X B-0 B-1 B-2 B-3 B-4 B-5 B-6