Saturday, September 8, 2012

Galaxian's digital oscillator explained.

The Namco Galaxian arcade PCB generates a few different types of sounds:

  1. Analog Fire sound.
  2. Analog Explosion sound
  3. Three Analog 'Rack Noises' (alien drones)
  4. Monophonic Digital Oscillator, which does the quirky intro tune and the aliens being destroyed.

The latter being digitally controlled and generated, it makes it a perfect candidate for the chipsounds bandlimited oscillator generators. The following explains how the digital part is generated:


First, a variable speed pulse is created by using two cascaded 4-bit counters (74LS161) (B). The input clock (2H @ 1.536MHz) is divided by a variable amount according to the last 8-bit value received from the 74LS273 (A)  flip flop. This is done by the Z80 CPU (which runs the game code) when it indirectly sets the !PITCH signal and the required pitch value into the "I/0 & Ram Data Bus" by writing to a specific address in external memory.

This pulse then drives pin 13 of a 74LS393 binary counter (C) which in turn outputs a 4-bit (16 step) binary pattern: 0000, 0001,0010,0011,(...),1111  or  0,1,2,3,(...),15 in decimal.
If those 4 output bits were to be sent to a 4-bit DAC, the result would have been a pretty standard saw waveform with no volume control. But this is obviously not what the Namco engineers wanted...

In this particular design, only 3 output bits of the '393 are used (QA, QC and QD, but NOT QB).
Resistors (D) (15k, 22k, 10k and 33k) are inserted onto the bits to create a weird R-2R 'esque ladder DAC. Also some 'components' of the signal are only added into the DAC depending on two extra
CPU controlled bits (Vol1 and Vol2).  Each driving two of the four available analog gates in the 4066 (E)


If you are following so far you understand that this can generate 4 different waveforms. Once you know this, its relatively trivial using voltage divider maths to figure out what those waveforms would look like.
I used an excel sheet for these maths:




From tests on my board the Vol1 bit is always 0 during gameplay, so logically only the [0,0] and [0,1] waveforms are actually ever used in the game. My guess its that vol1 never gets to be 1 to match the volume of the analog sounds this PCB also generates.

I successfully compared the two available waveforms with actual recordings of the board:



And they were included as oscillators definitions in chipsounds 1.6 under "05 - Arcade/Galax"

Wednesday, July 25, 2012

NES eprom carts



Clockwise from top:

1)Esper Dream 2 Aratanaru Tatakai, Famicom, VRC6, mapper 26, can use regular 27C020 EPROM
2)Lagrange Point, Famicom, VRC7, mapper 85, can use regular 27C040 EPROM
3)Castlevania, NES, UNROM, mapper 2, needs modification to use 27c010/27c020 eproms
4)Super Mario Bros, NES, NROM, mapper 0, no mods needed

Currently using 1 and 3 to run tests for my next updates.
I would also need to add my Dragon Ninja NAMCOT-163 (iNES Mapper 19) in there, but I didnt eprom-ise it yet.

Wednesday, February 8, 2012

New Scope




Can't wait to put it to good use. Its a major step up from my crappy PC-based USB scope. Thanks to EEVBlog for the great review.

Thursday, December 22, 2011

AY8930 Initial tests!



Over concerns received about the possibility that the chips were fakes I decided to test a few of them right away  (Paypal customer is always right no? I might just get my money back if they are fakes)

So first thing I did was to place two of those chips on my Bagman arcade board, and the sound was just as one would expect a normal AY-3-8910 (the old version). So at least they are not broken CPUs or whatnot.

The concerns raised by my colleagues pointed towards  the possibility that these were just re-branded AY-3-8910 and not AY8930's, based on the date code (2008?? if 0830 is a date code I would admit its odd for a chip designed in 1990) and on the peculiar look of the Microchip logo, also that "TAIWAN Microchip" was weird and unseen before. (though this and that beg to differ).

So I undusted my AY protoboard that I used for chipsounds research, and placed a AY8930 that was previously tested OK in Bagman. Tried a few VGMX log files, (including intv_lock_n_chase.vgmx - one of my favorite games)

First interesting discovery was that the chip didn't seem to run at 3.57MHz but at half of that (1.79MHz, just ok for the right pitch of the intv register dump). I forgot that my protoboard was last populated with a YM2149F, which uses pin 26 for clock divider (input). and my jumper was already shorted. So at least if this is a rebranded chip, its a rebranded YM2149F and not a bare AY-3-8910, since the 8910 doesn't have this feature.

Started to check out the datasheet and made a little test VGMX file that plays a simple tone and pass through
A) all 32 values of volume
B) all 8 values of Duty Cycle (PWM)

Here's a lame 'instant video' of my setup and playing both Lock 'n' Chase and then, my test file on my protoboard:



The duty cycle changes are sadly NOT seamless. This is mentioned in the datasheet as well. "The new duty cycle value will take effect immediately. This may result in one period with a "random" duty cycle at the time the register is updated."

So much for maxYMiser -alike PWM without 90% cpu usage and/or IRQ reset tricks...

I haven't yet tried the advanced LFSR noise, but I'm pretty sure this batch of chip is legit. It wouldn't make sense to copy such a chip design when theres no real demand for it. Anything is possible though....

Until next time!

Tuesday, December 20, 2011

AY8930 sourced!

















The AY8930 Enhanced Programmable Sound Generator is a very rare Microchip (who bought GI) version of the AY-3-8910. It includes better frequency range, noise, PWM and independent control of the envelope for each channel.

I was lucky to find a stash of those chips and will soon try them on my AY-3-8910/YM2149F protoboard to see if they work and experiment with them, then for a future addition to chipsounds.

As far as the interwebs are concerned it only has been used in one PC card (Covox Sound Master+) and one game (Where in Time is Carmen Sandiego). So my job will be to hack dosbox into spewing the register writes it sends to this chip and I'll make a render using my board (the usual stuff).

Since I have now too many AY8930's to care, if you are interested in upgrading your MSX, ST or whatever (untested), this might be your chance, since I will put a few of these rare babies on sale after they are tested.