Jump to content

MIDIbox NES?


unsocial
 Share

Recommended Posts

We already have the SID...what about the 2A03?

I've been thinking about this for some time already, but since im no programming/electronics guru i cant do much about it myself. The idea is to make a NES(2A03) module on the MIDIbox style to be used together with the CORE module, making it looking very similar to the MIDIbox SID. Looking at the 2A03 pinout http://nesdev.parodius.com/2A03_pinout.txt looks like it wont be hard to implement (electronically), since we can get the 5V from the CORE and we could reuse the NES crystal for clock, and maybe use joysticks to tweak parameters?

On the programming side, i have no idea how hard it would be to interface MIOS with the 2A03, maybe this can be useful http://nesdev.parodius.com/NESSOUND.txt 

MIDI implementations for the NES already exists......http://www.wayfar.net/ but i dont like the way it works, i would like to be able to gearup the MBSID + MBNES + MBSEQ  for complete cheese madness :)

So, what do you guys think? Im dreaming too much or is it simple and easy to do?

Link to comment
Share on other sites

  • Replies 64
  • Created
  • Last Reply

Top Posters In This Topic

We already have the SID...what about the 2A03?

I'm not sure if you've run across my Ten Million Projects for old video/computer sound chips that I've been occasionally mentioning around here.  I've got potential ideas for POKEY, AY-3-891x (YM2149), etc.  Those chips are generally quite straightforward because they are single-chip audio generators.  You stuff some data in the registers, you get some sound output - just like the SID.  There's programming to do, but the only major things that go onto a PCB are some shift registers, the sound chip itself, and an output buffer.  Essentially one can steal much of the circuitry from the MBHP_SID.

The 2A03 is unfortunately a completely different beast.  I read up on it a while back when I was going to use the 2C02 (PPU) as the graphics chip in a homebrew Z80 computer.  While the previously-mentioned chips are standalone audio generators, in the 2A03 the audio circuitry is just part of a modified 6502 CPU.  IIRC the sound registers can only be accessed by the 2A03 itself.  As you can imagine, this presents a few problems.

A basic sound-generating system based on the 2A03 would need (at the bare minimum) the 2A03 and a parallel EEPROM (8kB would be more than enough, 2kB should be fine), and a 2kB SRAM wouldn't hurt.  There's also other support circuitry (power supply, clock / crystal, audio output amp, etc.), but we'll just ignore that since it's trivial for the sake of this discussion.  Essentially what you need to build is a small single-board computer with some firmware that would read in note data (from shared RAM, or a serial link, etc.) and pass that on to the audio registers.

The hypothetical "MBHP_NES" machine would probably require some shared memory between the 2A03 and the PIC.  One could still use a shift register connection from the CORE module, but the "NES" module itself would be rather complex - at least compared to the SID module.  Not only would you need at least three major chips (2A03, ROM, RAM), you would either need some kind of bus arbiter to allow access to the RAM (by the CORE module, via the shift registers or whatnot), or a dual-port RAM that can be accessed without any bus contention issues.

Such a thing is definitely possible, but due to the integrated nature of the 2A03, using it with MIOS is far more complicated than for most of the other old sound chips.

Link to comment
Share on other sites

  • 2 months later...

Sorry to bring up this kinda old thread, but i'd just like to say that this would be a dream come true to have this and the SNES as self-contained synthesizers with banksticks. the NES (as well as the SNES) is the reason i got into synthesizers.

i just bought the MIDINES from wayfar.net (waiting for it to get here), but that doesn't seem like it has patch storage.

are there any projects, midibox or not, that have the 2A03 as a self-contained synth?

i know that there was one a few years ago that got to the point of making the pcbs... (http://web.archive.org/web/20030805180424/http://greybox.norfair.org/)

Link to comment
Share on other sites

  • 3 weeks later...

well, the midines does not really need patch storage - there are no filters, no LFO's... its very very basic synthesis - what do you need to save? Its all right there - the only thing worth saving are the volume modulations and pitch stuff, but even that is not really worth it.

I think the midines is a great toy to play with - its great to get as much music to pump out of the NES as possible - but its not exactly as inspiring as the SID, because its basically 2 square oscs, 1 tri osc, some noise, and a few 8 bit samples that the dude stuffed in there as a bonus. The absence of filters and LFO's make it impossible to lose that "NES" sound - which is something that I like about my midines. Listen to one of the songs I made on it, and there is no doubt that its a NES!

http://www.milkmansound.com/audio/nes2.mp3

Link to comment
Share on other sites

  • 2 weeks later...

Not maybe, i midibox NES, maybay the orginal board of the nes with some modifications, and the Midibox "only" figurin note gate and controller Midi data chanche in the NES language, and storage this the controll data in the 24LC256 or somthing as a patch maybe the switching between the patches needs some deleay couse the NES? is to slow, but he how care...

Its just a idiea  :-\

Link to comment
Share on other sites

Im, ready to spend my time in such a project, but not in the sample section- i dont interestet in it- and its to complicatet,, i think the synth section is enough, but before some nes must come to me home, I dont know what i must lurn bevor: 6502 language or how to programm a pic.....

Link to comment
Share on other sites

I think I might have a solution: a Z180 single board computer.  Take a look here: (http://members.iinet.net.au/~daveb/p112/p112.html).  I've made a new batch of these boards with the original designer's blessing and am selling them as complete kits.  The original audience is old computer buffs, but it seems to have the kind of power and versatility you guys are talking about for controlling the 2A03.

Link to comment
Share on other sites

I think I might have a solution: a Z180 single board computer.  Take a look here: (http://members.iinet.net.au/~daveb/p112/p112.html).  I've made a new batch of these boards with the original designer's blessing and am selling them as complete kits.  The original audience is old computer buffs, but it seems to have the kind of power and versatility you guys are talking about for controlling the 2A03.

Whats the price? (fully stuffed) or the board?

But I think it could run also when we reuse the whole NES board (the whole computer) and give the NEs the sound information not about a Rom (catrige)  we replace the catrige with the pic 18 instead (or a combination of both- or over the controller board with some modification)I think it should be DIY, but when the price for a single computer like above is cheaper....)

Link to comment
Share on other sites

They're $120 for a complete kit.  That gets you a board, components, 64K SRAM, two serial port pigtails, a boot floppy, and two CDs full of  utilities, apps, info, docs, etc.  The price includes shipping in the US.  All surface-mount soldering (two qfp chips and three discretes) is already done for you.

The whole NES approach also sounds viable, particularly if the second edition of the NES is used for space-saving purposes.  I understand that it lacks RCA jacks, but I'm sure one can find the audio signal somewhere inside.  The cartridge-based synth discussed earlier is nice and elegant, but its requirement of a TV is a big turnoff. 

Link to comment
Share on other sites

2A03 internal hardware port map

The sound hardware internal to the 2A03 has been designated these special memory addresses in the 6502's memory map.

$4000-$4003 Rectangle wave 1  (The bits between, are for chanching the sound....)

$4004-$4007 Rectangle wave 2 (nearly identical to first)

$4008-$400B Triangle

$400C-$400F Noise

$4010  DMC play mode and DMA frequency

$4011  DMC delta counter

$4012  DMC play code's starting address

$4013  DMC length of play code

$4014  transfer 256 bytes from written page to $2004

$4015r  Channel enable / length/frame counter status

$4017  frame counter control

Note: $4015 is the only R/W register here. All others do not respond to read

cycles. Reads from $4016 and $4017 are decoded inside the 2A03, and those

signals are available externally. Writes to bits D0-D2 of $4016 updates an

internal 3-bit latch, with the status of those bits available externally.

e.g.:

+--------------+

|Register set 1|

+--------------+

$4000(rct1)/$4004(rct2)/$400C(noise) bits

---------------------------------------

0-3 volume / envelope decay rate

4 envelope decay disable

5 length counter clock disable / envelope decay looping enable

6-7 duty cycle type (unused on noise channel)

all instructions where any $nn,X and $nnnn,X addressing mode rows intersect

with opcode columns 82 and A2, use the Y register for indexing

*2A03 pinings*

The net is full with this information (above) but nobody can tell me on witch input i should send this information.

I think about on data bus D0 -D7 the d0 - D-7 are going directly to the programm rom of the catrige> i hang  :(

                      ___  ___

                    |*    \/      |

ROUT  <01]                [40<  VCC

COUT  <02]                [39>  $4016W.0

/RES    >03]                [38>  $4016W.1

A0        <04]                [37>  $4016W.2

A1        <05]                [36>  /$4016R

A2        <06]                [35>  /$4017R

A3        <07]                [34>  R/W

A4        <08]                [33<  /NMI

A5        <09]                [32<  /IRQ

A6        <10]  2A03    [31>  PHI2

A7      <11]                [30<  ---

A8      <12]                [29<  CLK

A9      <13]                  [28]  D0

A10    <14]                [27]  D1

A11    <15]                [26]  D2

A12    <16]                [25]  D3

A13    <17]                [24]  D4

A14    <18]                [23]  D5

A15    <19]                  [22]  D6

VEE  >20]                  [21]  D7

                |________|

ROUT: audio out -> rectangle wave out

COUT: audio out -> triangle + noise

/RES: hard reset on zero (conect to ground, when want to reset?)

A0-A15: the 6502's address bus output pins.

VEE, VCC: Power -> ground +  +5VDC

D0-D7: the 6502's data bus.

CLK: Masterclock input line (236250/11 KHz)

---: wire to  ground -> unknown functionality

PHI2: Divedet by 12 Clock 1.79 MHz output.

/IRQ: interrupts the 6502 when this pin is set to zero while the 6502's

internal interrupt mask flag is 0.

/NMI: NMI's the 6502 on a negative edge signal transition (1->0).

R/W: direction of 6502's data bus (0=write;1=read).

/$4017R: goes active (zero) when A0-A15 = $4017, R/W = 0, and PHI2 = 1.

This informs an external 3-state inverter to throw controller port data onto the

D0-D7 lines.

/$4016R: goes active (zero) when A0-A15 = $4016, R/W = 0, and PHI2 = 1.

$4016W.0, $4016W.1, $4016W.2: these signals represent the real-time status

of a 3 bit writable register located at $4016 in the 6502 memory map. In

NES/FC consoles, $4016W.0 is used as a strobe line for the CMOS 4021 shift

register used inside NES/FC controllers

Link to comment
Share on other sites

  • 1 year later...

I would to up this topic, MidiBox NES APU is a very good idea, and for example I would to show you what kind of music NES is able to produce. This music is make without any treatments or filters. It run on real NES (MP3 is record from a PAL NES) .

 

MP3 for direct listening : http://wellby.dyndns.org/dnl/gk/snd/dl.mp3

 

NSF dump format : http://wellby.dyndns.org/dnl/gk/snd/dead_lock.nsf

 

NSF player for listening NSF : http://wellby.dyndns.org/dnl/gk/snd/virtuansf1015.rar

Edited by Dr.Wily
Link to comment
Share on other sites

That sounds brilliant!

I'm guessing it's been heavily multi-tracked? Even so, I had no idea that the NES could produce such convincing tones.

Personally, given the complexity of interfacing the 2A03, i'd stick with NES VST's rather than desing a new MBHP app for it. That said, an MBHP interface that plugs into the cart port, similar to the MIDINES, (But better obviously) could be an option.

Actually, that's what I want for the GAMEBOY, but that's a whole other story!

Link to comment
Share on other sites

Actually, that's what I want for the GAMEBOY, but that's a whole other story!

To get the best sounds out of the gameboy, i think you should use a tracker better than midi.

It's like for the TB303, a part of it's legendary sound came from the way it's sequencer works !

Link to comment
Share on other sites

What would you gain from using the NES chip instead of the SID?

If you use midiNES or program the NES yourself, you only have 2 osc, 1 sample and 1 noise channel. Same goes for the C64 (which, as far as i know, only offers 3 channels). But when the SID is freed from its 4 bit restrain of the c64, it can sounds like something completely else.

Dont, get me wrong, this is a question, not a shoot down: If you do the same with the NES chip. what have you gained, will it sound different from the SID, considering that it basically can do the same?

/carsten

PS: it would be really cool if you could use the sample part of the NES and create granular synthesis.  ::)

Link to comment
Share on other sites

I think there are several things that make the NES sound chip interesting:

1. simple

= little resources needed to control the synthesis options

2. digitally controlled

= cool stuff possible like wavetables and whatnot

= easier connection to the MB

= doesn't break in a live situation

3. the "sound"

= let's not get too carried away with that, but considering most of those chips have had full-time use for 10 years at the least (and some might be 20 years old), i think they CAN have gained a nice, burned-through, sound. I think this small imprint time left on a chip is something that could be interesting to some people.

4. very cheap

= build 20 of these and you got yourself a 100-oscillator rig

= perhaps you could come up with a chained design where you could use as many NES "modules" as you'd want

5. with a NES you get not only the chip, but also other parts

= the famicom had microphones in the controllers

= you get a "vintage analog output stage" you can use later when the audio chip is gone from the NES

6. sampling

= DCO waveforms

= wavetable waveforms

= if the chip reads the samples from SRAM, you could edit the sample continuously, easily make wavetables, etc

Link to comment
Share on other sites

Some research on the 2A03 revealed this.

The Ricoh 5A22 is the microprocessor CPU produced by Ricoh for the Super Nintendo Entertainment System (SNES) video game console. The 5A22 is based around the 16-bit CMD/GTE 65c816, itself a version of the WDC 65C816 (used in the Apple IIGS personal computer).

All of the above mentioned processors are based on the MOS Technology 6502 family of processors.

In addition to the 65C816 CPU core, the 5A22 contains support hardware, including:

Controller port interface circuits

Circuitry for generating NMI interrupts on Vblank

Circuitry for generating PSG sound with included 2A03 core

Circuitry for generating IRQ interrupts on screen positions

A DMA unit, supporting two primary modes:

General DMA, for block transfers at a rate of 2.68MB/s

Hblank DMA, for transferring small data sets at the end of each scanline outside of the active display period

Multiplication and division registers

So, am I right to think that 5A22 = 2A03 + easier interfacing + bonus stuff?

Link to comment
Share on other sites

Interesting points. I have some further questions.

1. Isnt wavetables possible with the SID, or is it only some kind off semi-feature?

2. Does the SID break in live situations?

3. With continues edit of a sample, wouldnt granular synthesis be possible. I was actually only kidding about this in my first remark. I would guess it would use to much RAM.?

I have a remark too. "Cheater" asks about the difference between the NES and SNES chips. Well, one advantage for the SNES (atleast where i live) is that it is far easier to get hold off, and far cheaper in the fleemarkets than the NES. Other than that, i dont know anything about the difference in the technology.

/carsten

I think there are several things that make the NES sound chip interesting:

1. simple

= little resources needed to control the synthesis options

2. digitally controlled

= cool stuff possible like wavetables and whatnot

= easier connection to the MB

= doesn't break in a live situation

3. the "sound"

= let's not get too carried away with that, but considering most of those chips have had full-time use for 10 years at the least (and some might be 20 years old), i think they CAN have gained a nice, burned-through, sound. I think this small imprint time left on a chip is something that could be interesting to some people.

4. very cheap

= build 20 of these and you got yourself a 100-oscillator rig

= perhaps you could come up with a chained design where you could use as many NES "modules" as you'd want

5. with a NES you get not only the chip, but also other parts

= the famicom had microphones in the controllers

= you get a "vintage analog output stage" you can use later when the audio chip is gone from the NES

6. sampling

= DCO waveforms

= wavetable waveforms

= if the chip reads the samples from SRAM, you could edit the sample continuously, easily make wavetables, etc

Link to comment
Share on other sites

So, am I right to think that 5A22 = 2A03 + easier interfacing + bonus stuff?

Humm.. No bonus to use SNES chip instead orriginal 2a03. The 2a03 is just a 6502 with some custom sound capability. In first SNES chip was designed for a retro compatibility with NES games, but Nintendo gave up the project of using NES game on SNES. But luckily 65c816 CPU kept all core of the 2a03.

Some very few games use PSG fonction of the 2a03 (Super Gameby use it). But SNES APU is totaly separate from the rest of the SNES componment (it has its own bus and work without any other CPU). The 2a03's sound is produce by 65c816 not by SNES APU. Thus is no advantage (or disavantage) to use SNES CPU.

Jaiced --->

I'm guessing it's been heavily multi-tracked?

Multii tracked ? What do you mean ? This music run on real hardware (MP3 in this thread was recorded from a PAL NES)

Link to comment
Share on other sites

About the multitracking:

No, the mp3 was recorded live from a single NES

about the SNES:

some links

http://en.wikipedia.org/wiki/Snes - lists what the SNES audio subsystem can do:

Sound Controller Chip: 8-bit Sony SPC700 CPU for controlling the DSP chips independent of the main 5A22 CPU. The main CPU communicates with this sound controller through a set of four memory mapped registers.

Clock Speed: 1.024 MHz.

Sound RAM: 64 kB shared between SPC700 and S-SMP.

Memory Cycle Time: 279 milliseconds

Main Sound Chip : Sony S-SMP

Hardware ADPCM decompression

8-channel PCM

Hardware sound effects:

Pitch modulation

8-tap FIR filter (typically used for reverberation)

ADSR and 'GAIN' (discretely controlled) volume envelopes

Polyphony of 8 notes per voice

SFx sound chip : Sony\Nintendo S-DSP

3-channel PCM

Second Order Low-pass Filter, one for each channel, for improved quality of low-frequency (bass) tones.

Pulse Code Modulator: 16-bit ADPCM (if programmer uses 4-bit compressed ADPCM samples, expanded to 16-bit resolution, processed with an additional 4-point Gaussian sound interpolation).

Although the SNES is normally only able to output stereo sound, a few games (such as Jurassic Park) use Dolby Pro-Logic to create surround sound embedded in the stereo sound signals.

Note - while not directly related to SNES hardware, the standard extension for SNES audio subsystem state files saved by emulators is .SPC, a format used by SPC players.

http://www.gamesx.com/wiki/doku.php?id=schematics:how_sound_on_the_snes_works

The SNES’ sound module consist of:

(1) the sound engine: SPC700 8-bit CPU above and DSP unit below, both designed and manufactured by Sony (2): 9112 32k SRAM manufactured by Sharp (3): D6376 2 channel 16-bit DAC manufactured by NEC (4): 9124 32k SRAM manufactured by Hitachi (5): 2904 Dual Op-Amp manufactured by JRC (6): I/O connector to the mainboard This device was designed by Nintendo and manufactured by Mitsumi.

So, reassuming... nothing very interesting in the SNES over a NES. You get a PCM wave mixer, that's all. I think there are better ways to do PCM mixing nowadays (chips that are better, cheaper, easier to program, thru-hole, and so on...).

Supposedly there's also an 8-tap FIR filter which can be used, for example, for reverbs. Wonder what the possibilities of that are (I don't expect much from that, though).

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...