XENON Voice ROM help

It would be cool if someone could come up with a truth table for the PROM doing the address decoding. Not only would it make developing a sound ROM table easier but it would facilitate designing a PAL/GAL based replacement, though I'm not sure how much demand there would be. If that thing fails you're pretty much screwed. Actually... the best thing a truth table for that PROM would do is make a single EPROM conversion easier which is probably the best solution of all, should that PROM or any of the ROMs fail. The ROM on the vocalizer exists from 8000-ffff in the memory map making it really easy to use a single 27C256 EPROM using A15 as the enable. There's even an unused inverter on the schematic. The trick will be determining in what order the original ROMs need to go in the EPROM. I'm intrigued enough that I'll probably figure that out if I ever get my hands on one of those sound boards.

If this game (sound board) works in pinMAME, then someone has already done so. Is the pinMAME driver open source? Last time I looked for the actual driver code for something, I couldn't find it in the source package...
 
If this game (sound board) works in pinMAME, then someone has already done so. Is the pinMAME driver open source? Last time I looked for the actual driver code for something, I couldn't find it in the source package...

Yeah... I was thinking I should just ask Oliver. I'm sure he'll know because he would have to know to write the pinmame driver. There are some sound boards in pinmame that just use .wav samples which wouldn't necessarily require intimate knowledge of the hardware but this one appears to be fully emulated.

The code is open source. The driver files are in /PathToPinMAME/src/wpc. The driver for this sound board is by35snd.c. Sadly, the driver source doesn't mention the layout of the EPROMs (because they don't care) it just mentions where the chunk of code lives within memory.

I can just see myself buying one of these boards so I can figure all this stuff out and write an article about it. I did the same thing with the Williams system 7 sound/speech board for a similar reason. Haven't even started on that one yet :p
 
Lindsey: Is your article on Sys 7 sound board architecture available for public view on your website - or are you saying you have not done it yet? If so, would like to see it. Thanks.

Chris
 
The code is open source. The driver files are in /PathToPinMAME/src/wpc. The driver for this sound board is by35snd.c. Sadly, the driver source doesn't mention the layout of the EPROMs (because they don't care) it just mentions where the chunk of code lives within memory.

Wow, thanks for pointing me to the proper place in the source tree. I assumed "wpc" was just for Williams Pinball Controller stuff, and ignored that directory. Mistake.

So, is this the file you're looking at?
http://pinmame.svn.sourceforge.net/viewvc/pinmame/trunk/src/wpc/by35snd.c?revision=3280&view=markup
 
It also makes me wonder what the hell they were thinking sometimes.

Yeah I had that reaction when I was working for a large route operator as a tech back in high school. I couldn't believe how poorly most of the games were designed, especially in regards to power trace sizing and connector ratings.

Only in the last couple years I got back into it as a hobby I can make some money at.
 
Wow, thanks for pointing me to the proper place in the source tree. I assumed "wpc" was just for Williams Pinball Controller stuff, and ignored that directory. Mistake.

I thought the same thing until I did a grep for something like "-35" across the directory tree and found the drivers. Lots of useful information about the hardware in there.


Yes, the memory map of the vocalizer according to the pinmame source is below:

pinmame source (by35snd.c) said:
241 / U4 ROM f000-ffff (8000-8fff)
242 / U1-U8 ROM 8000-ffff (vocalizer board)
243 / U10 RAM 0000-007f
244 / U2 PIA 0080-0083 (PIA0)
245 / A: 8910 DA
246 / B0: 8910 BC1
247 / B1: 8910 BDIR
248 / B6: Speach clock
249 / B7: Speach data
250 / CA1: SoundEnable
251 / CB1: fed by 555 timer (not equipped?)
252 / CA2: ? (volume circuit)
253 / CB2: ? (volume circuit)
254 / IRQ: CPU IRQ
255 / U1 AY-3-8910
256 / IOA0-IOA4 = ~SoundA-E
257 / CLK = E

I'm going to take a guess that U4 on the main board contains the program ROM and U1-U8 on the vocalizer are all sound data but that's just a guess. It also looks like the chunk of ROM in U4 is mirrored in both f000-ffff and 8000-8fff. This isn't a surprise as Bally did all kinds of weird address decoding stuff (like using a PROM as "programmable logic" for example). The 6802 boots at FFFF so they mirror it into lower address space by leaving higher address lines out of the decoding logic. The way I solved the problem of stuff being mirrored all over the place with my CPU socket memory board was by gating the VMA and RW signals from the CPU through programmable logic between the CPU and the socket. That way I can control when those signals get out to whatever weird address decoding logic there might be as necessary without stuff stepping all over each other like PIAs being enabled when I do a write to extended RAM or something and your house burning down.

I will have to take a closer look at the schematic to get the full grasp of how they're decoding the addresses but a single EPROM conversion for the vocalizer board looks relatively easy. Should be able to replace U4 as well now that I take a closer look at it. Goodbye 9 EPROMs, Hello one ;)
 
Last edited:
Yeah, I see that. A little below, we have the section of the driver that has this:

285 static MEMORY_READ_START(sp56_readmem)
286 { 0x0000, 0x007f, MRA_RAM },
287 { 0x0080, 0x00ff, pia_r(SP_PIA0) },
288 { 0x8000, 0xffff, MRA_ROM },
289 MEMORY_END

Now, this is a bit different from what I'm used to seeing in a "regular" MAME driver. Usually I can see the size of each EPROM file being loaded, and the location in memory it is mapped. It's missing here. But I found this in the .h file (http://pinmame.svn.sourceforge.net/viewvc/pinmame/trunk/src/wpc/by35snd.h?revision=3280&view=markup)

132 #define BY57_SOUNDROM(n1,chk1,n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7) \
133 ROM_LOAD(n1, 0x8000, 0x1000, chk1) \
134 ROM_LOAD(n2, 0x9000, 0x1000, chk2) \
135 ROM_LOAD(n3, 0xa000, 0x1000, chk3) \
136 ROM_LOAD(n4, 0xb000, 0x1000, chk4) \
137 ROM_LOAD(n5, 0xc000, 0x1000, chk5) \
138 ROM_LOAD(n6, 0xd000, 0x1000, chk6) \
139 ROM_LOAD(n7, 0xe000, 0x1000, chk7)

That, along with this from the main driver file (http://pinmame.svn.sourceforge.net/...src/wpc/by35games.c?revision=3251&view=markup)
might tell us something:

748 BY57_SOUNDROM( "811-22_1.532",CRC(c49a968e) SHA1(86680e8cbb82e69c232313e5fdd7a0058b7eef13),
749 "811-23_2.532",CRC(41043996) SHA1(78fa3782ee9f32d14cf41a96a60f708087e97bb9),
750 "811-24_3.532",CRC(53d65542) SHA1(edb63b6d36524ae17ec40cfc02d5cf9985f0477f),
751 "811-25_4.532",CRC(2c678631) SHA1(a1f9a732fdb498a71caf61ec8cf3d105cf7e114e),
752 "811-26_5.532",CRC(b8e7febc) SHA1(e557b1bbbc68a6884edebe779df4529116031e00),
753 "811-27_6.532",CRC(1e2a2afa) SHA1(3f4d4a562e46c162b80660eec8d9af6efe165dd6),
754 "811-28_7.532",CRC(cebb4cd8) SHA1(2678ffb5e8e2fcff07f029f14a9e0bf1fb95f7bc))

Looks to me like they're just mapped sequentially (22,23...28) in 0x1000 chunks, from 0x8000 to 0xEFFF.
 
Lindsey: Is your article on Sys 7 sound board architecture available for public view on your website - or are you saying you have not done it yet? If so, would like to see it. Thanks.

Chris

What I meant was I bought a sound board to hack up but never got around to implementing and testing my ideas with it. I had some ideas for hardware hacks and got really excited about it and bought a working board set just to hack on. That was a couple of months ago and other more pressing things came up. I wrote a basic article on the system 3-6 sound boards and developed a conversion to use the newer generation sound boards with older generation ROMs but I haven't written anything on the System 7 sound AND speech boards yet. The only real difference between the 2 generations of sound board are the address decoding logic and the expansion header on the later version allowing for the speech board. All I have in mind is to go over how the speech board works and develop a single EPROM conversion. I know it will work. It's just a matter of doing it, testing it and taking pictures. I'm feeling like this pinball stuff has been neglected for too long now so you'll probably see me doing some board hacking in the near future. I have a few cool ideas in mind :)
 
Looks to me like they're just mapped sequentially (22,23...28) in 0x1000 chunks, from 0x8000 to 0xEFFF.

Cool! I think you're right. I don't know why it didn't occur to me that the driver would have to load the ROMs individually and that would tell us how they're laid out. So obvious. What a tool! haha!

Anyone want to sell a sounds plus and vocalizer board set?
 
What I meant was I bought a sound board to hack up but never got around to implementing and testing my ideas with it. I had some ideas for hardware hacks and got really excited about it and bought a working board set just to hack on. That was a couple of months ago and other more pressing things came up. I wrote a basic article on the system 3-6 sound boards and developed a conversion to use the newer generation sound boards with older generation ROMs but I haven't written anything on the System 7 sound AND speech boards yet. The only real difference between the 2 generations of sound board are the address decoding logic and the expansion header on the later version allowing for the speech board. All I have in mind is to go over how the speech board works and develop a single EPROM conversion. I know it will work. It's just a matter of doing it, testing it and taking pictures. I'm feeling like this pinball stuff has been neglected for too long now so you'll probably see me doing some board hacking in the near future. I have a few cool ideas in mind :)

Excellent, thanks for the info! Now, if someone can come up with an improved sound boartd for these systems, that would be awesome. In fact, being in electronics manufacturing, I'll be happy to produce and market them, no worries....

Chris
 
Cool! I think you're right. I don't know why it didn't occur to me that the driver would have to load the ROMs individually and that would tell us how they're laid out. So obvious. What a tool! haha!

Anyone want to sell a sounds plus and vocalizer board set?

I would, but the only one I got is in my Xenon ;)
 
So I finally got around to diagnosing this issue on my Xenon tonight.

I decided to go for the simpliest method. I hit the self test button on the Sounds Plus board and wrote down the list of sounds in their order. I then popped out each ROM one at a time and played through the Self Test again to document which sounds were missing.

Was pretty quick and easy to find that the garbled static was at U5.

Incidentally, the sounds are stored on the ROMs in the order they are played in the Self Test. The number of sounds/voices stored on each ROM varied by the length of the clip.

So less than 10 minutes later I found I just need to order a programmed U5 online.
 
I know it's an old thread but was hoping ya'll were still around... I picked up a Xenon recently and all the sounds are good except the one used in attract mode. Any idea on which chip that would be?

Also, since you didn't the work before, maybe you could post all the chips and their associated sound... if you still have your notes.

Thanks!

Rusty


So I finally got around to diagnosing this issue on my Xenon tonight.

I decided to go for the simpliest method. I hit the self test button on the Sounds Plus board and wrote down the list of sounds in their order. I then popped out each ROM one at a time and played through the Self Test again to document which sounds were missing.

Was pretty quick and easy to find that the garbled static was at U5.

Incidentally, the sounds are stored on the ROMs in the order they are played in the Self Test. The number of sounds/voices stored on each ROM varied by the length of the clip.

So less than 10 minutes later I found I just need to order a programmed U5 online.
 
I don't still have my notes from it, but if you follow the method I described you can find it very quickly.
 
Yeah... I did that.. but man.. those sounds go by fast!!!!

I only removed two chips but put them back before I turned it back on.. wasn't sure if it would damage anything running with out the chips. Guess not.

I'm really reluctant to remove the chips as the legs tend to be very brittle on some and I recently trashed some chips on a Galaga machine and now I'm scared to remove old chips.

But.. I'll follow the instruction and then post the results here for prosperity.

Thanks for the reply!

Rusty
 
Back
Top Bottom