Jump to content
IGNORED

The Official "Super Expansion Module" Thread


opcode

Recommended Posts

Not sure if this has been brought up, and forgive me if it's been answered. Will the SGM work with a video modded CV? Sounds like it should, I don't think you are just doing a video pass through like the 2600 expander, or are you? Either way can't wait to hear more, and eventually own one.

 

Thanks for all your hard work, and to everyone else producing HW and games for the CV

 

Charles

 

With DKA mostly done, it is time to get back to the Super Game Module.

As some of you may remember, last year I managed to produce a fully functional prototype, which was small and cheap to produce, still included the basic features I wanted the SGM to have. It was also well designed and built (IMHO). However...

 

I have decided to make that plan B...

 

The SGM has seen quite a number of different possible implementations, but in the end I am never 100% happy with any of them. A couple of years ago I planned to use FPGAs to do stuff that wasn't available off-the-shelf, but then I changed my mind because I thought it was too complicated to design for SMD parts, I wanted everything to stay in the good old “thru hole” realm.

 

However last year's version of the SGM proved I could work comfortably with SMD stuff, as well as with programmable logic. So I decided to give FPGAs another shot (I already have the development kits anyway).

 

The thing I am most unhappy with in the current design is the improved sound. Pixelboy can probably attest how psyched I am about sound. And the PSG I am currently using, while an improvement over the stock CV PSG, is still a very modest one. And then I wanted to have some sort of PCM playback capability for voice and stuff, still the only solution I could find, an ADPCM chip from Oki, seems to be too much of a burden for poor old Z80. FM is just a pain to deal with, and not very good for certain uses, even though I like the sound of it a lot. Then we have the SCC, the sound chip Konami created for the MSX that sounds wonderful and is a blast to program for, but is no longer available.

 

So what I plan to do is to create my own sound solution for the SGM, which would cover the most areas for my specific needs. It isn’t secret that I am mostly interested on arcade ports, so FM isn't that interesting for me as it is more of a late 80s thing. On the other hand PSG is a little too limited. The best option is wavetable, like the SCC.

 

With wavetable we can have for once perfect emulation of the sound chip Namco used in their classic arcades, we can have PSG emulation (square wave), we can have SCC emulation (in case we decide to port some of the final and best Konami games for the MSX). We can even have very accurate NES sound emulation.

But best of all we can have playback of voices and sound FX that were original created by discrete circuits in the original arcades, and those would be otherwise near to impossible to properly reproduce using a regular PSG. And better yet, with almost zero use of precious CPU time.

 

So I already have a design for this new chip and I am about to start working on that.

First step is to get it running on my dev kit, then eventually connect the dev kit to the ColecoVision. Once everything is running ok, I can design a board. This new board shouldn't be much different in terms of size when compared to the exiting board, as the FPGA will replace the CPLD and PSG in the existing board.

 

So I will give myself a few months to see if I can make any progress with this thing. In case I get stuck, I can just go back to plan B. On the other hand if I succeed...

 

More details soon...

Link to comment
Share on other sites

By the way, have you ever seen the ADAM Auto-Dialer expansion module? If you could make the SGM PCB small enough, you could actually use the auto-dialer's plastic casing, with some very minor modifications. Just a thought... :)

Finding the ADAM AutoDialer in enough quantities would be near impossible. Then dyeing each one black and making a clean cut-out for a Parallel Port where the two phone-jack connectors are would make it very time consuming and tedious... unless you are just saying to use it as a starting point for an eventual new enclosure.

post-25956-0-26141900-1310519750_thumb.jpg

post-25956-0-14152800-1310519755_thumb.jpg

post-25956-0-98470400-1310519759_thumb.jpg

post-25956-0-91284300-1310519764_thumb.jpg

post-25956-0-60744400-1310519770_thumb.jpg

  • Like 1
Link to comment
Share on other sites

So that means there was something else to plug into the expansion port other than the Atari module? I had no idea... I thought the autodialer was supposed to go inside the ADAM case.

Indeed that would be used as a template. Even if the SGM case needs to be a little larger, having a template will make my life a lot easier.

 

Thanks Luc for pointing that out, and Jim for taking his time to take the pictures.

Oh, BTW: Jim, you should receive that package tomorrow... ;)

Link to comment
Share on other sites

unless you are just saying to use it as a starting point for an eventual new enclosure.

Yes, that's what I meant. When you approach a plastics manufacturer with a plastic model that already exists, it's much easier to scan/digitize this piece of plastic and create a metal mold, compared to doing it from scratch. That's what the lady at Moldex once told me anyway.

 

Didn't see any AutoDialers on eBay tonight, but I just checked eColeco.com, and they are apparently selling some for 20$ each. Of course, that doesn't mean that they actually have any in stock, but it's worth checking out.

 

I have an AutoDialer here, but I damaged the plastic severely when I tried to open it up to see what it looked like inside. :|

Link to comment
Share on other sites

So that means there was something else to plug into the expansion port other than the Atari module? I had no idea... I thought the autodialer was supposed to go inside the ADAM case.

Indeed that would be used as a template. Even if the SGM case needs to be a little larger, having a template will make my life a lot easier.

Also note the extrusion on the underside of the module. It's like a "support leg" that keeps the module stable vertically. I think the SGM casing could also use such a thing.

 

Thanks Luc for pointing that out, and Jim for taking his time to take the pictures.

You're welcome. :)

Link to comment
Share on other sites

So that means there was something else to plug into the expansion port other than the Atari module? I had no idea... I thought the autodialer was supposed to go inside the ADAM case.

 

As far as Coleco made devices that plugged into the Expansion Module Interface on the right side of the ADAM Memory Console... yes, the AutoDialer is the only one other than the E.M. #01. There were numerous 3rd Party/Homebrew Interfaces that were made after 1985 that used the E.M.I., but they all used a ribbon cable/connector to make the attachment.

 

The AutoDialer is 4.125" L x 3.50" W x 1.750" H (the height includes the support leg).

 

Indeed that would be used as a template. Even if the SGM case needs to be a little larger, having a template will make my life a lot easier.

 

The AutoDialer that I have is just loose, but I am picking up a boxed one at ADAMcon so I will have an extra one that I will donate to your cause and send back with the "you know what" after the ADAMcon.

 

If the case does work for you then there are 3 people that may have some... Bob S. and Rich C. of ADAMcon fame and Terry Fowler of eColeco. I doubt, highly, if they would have the numbers that you may eventually need.

 

Oh, BTW: Jim, you should receive that package tomorrow... ;)

 

Looks like I'll be calling in sick to work! :-o :evil: :-o

Link to comment
Share on other sites

So that means there was something else to plug into the expansion port other than the Atari module? I had no idea... I thought the autodialer was supposed to go inside the ADAM case.

Indeed that would be used as a template. Even if the SGM case needs to be a little larger, having a template will make my life a lot easier.

Also note the extrusion on the underside of the module. It's like a "support leg" that keeps the module stable vertically. I think the SGM casing could also use such a thing.

 

Yeah, I saw that. The lower the case profile, the cheaper it would be to have the mold created, so that would be useful, though I must confess I find it, let's say, not exactly pretty...

 

Anyways, here is what I am planning for the sound chip:

 

I want to keep it under certain constraints, so it sounds and act like something that was possible in the 80s. Taking that into consideration it is my opinion that wavetable is the way to go, for its incredible flexibility.

The ColecoVision Wavetable Sound Generator will then be an 8 channels sound chip with two variants of the same synthesis process.

The lower 4 channels will use small 32 sampling points’ waves, while the upper 4 channels will use waveforms of any size up to 32KB. In fact 32KB is the size of the wave RAM, so all 4 "large wave" channels will share that RAM. With that the lower 4 channels should be more suitable for music and simple sound effects, while the upper 4 are more suitable for drums, voices and complex sampled sound FXs. However I should also point out that one can use the upper 4 channels exactly like the lower 4 if you limit the wave size to 32 bytes. And the reason I have two sets of somewhat distinct channels has to do mostly with the frequency (speed) that the FPGA will operate, which is 21MHz, though the sound chip will appear to the system as a 3.58MHz part. There are a couple of reasons for the chosen speedgrade, but we can discuss that later.

For now lets finish with some samples. The 32 byte waveforms channels are nothing new actually. At least 3 significant sound chips used it in the 80s. The first one was the sound chip Namco used with their classic arcades, starting with Pac-Man, then Galaga, Dig-Dug, Pole Position, Xevious, Mappy, etc.

The second one was Konami's SCC for the MSX, used in many different games:

Salamander

http://www.youtube.com/watch?v=yaEp8q6PG9U&feature=related

Space Manbow

http://www.youtube.com/watch?v=vpLTuvzk80o&feature=related

Gradius:

And since the SCC could also simulate the Namco chip, I was able to create the port of Pac-Man Collection for the MSX using the SCC. Notice how it sounds spot on:

And then the 3rd chip was used with the PC-Engine (aka TurboGrafx or whatever).

 

Namco chip, SCC and PC-Engine offer 3(6 for Pole Position), 5(or 8 when the MSX PSG is added) and 6 channels respectively. What they all lack is the longer waves I am planning for the WSG's 4 upper channels. With that drums could have sounded way better in all MSX games above (Konami used the PSG for drums, which obviously is far from ideal). They all also lack voice playback and stuff like that.

 

More info as I develop...

  • Like 2
Link to comment
Share on other sites

Not sure if this has been brought up, and forgive me if it's been answered. Will the SGM work with a video modded CV? Sounds like it should, I don't think you are just doing a video pass through like the 2600 expander, or are you? Either way can't wait to hear more, and eventually own one.

 

Thanks for all your hard work, and to everyone else producing HW and games for the CV

 

Charles

 

 

Yes, it should work just fine with a video modded CV, no changes in the video subsystem anyway.

Link to comment
Share on other sites

I think I have most of the lower channels wave generator done, so I can already start simulating.

Next I need to do the wave memory access for those channels.

Quick general question: How does one go about creating sound data compatible with your FPGA sound solution? Will it require custom data encoding of some sort? Just curious.

Link to comment
Share on other sites

I think I have most of the lower channels wave generator done, so I can already start simulating.

Next I need to do the wave memory access for those channels.

Quick general question: How does one go about creating sound data compatible with your FPGA sound solution? Will it require custom data encoding of some sort? Just curious.

 

That depends. For the "wavetable lite" portion (those 32 bytes waveforms), you can create that manually. Waveforms are signed (two's complement) bytes, which means, 0 is no amplitude, 1 to 7Fh results in an increasingly higher amplitude, -1 to -128 (FFh to 80h) results in an increasingly higher negative amplitude. That is the same as the SCC, so you can use the large number of waves already available for it. Namco used a simpler model, 4 bits unsigned. The PC-Engine used 5-bits. So they are both subsets.

 

For the larger waves, you can use any tool that gives you 8-bit signed PCM. To calculate the playback frequency, do this (though I will discuss that in detail later):

 

Period (12 bit value you load in the period register) = (3579545/sampling_frequency) - 1

 

So for example, suppose you sampled something at 8kHz. In order to playback it at the same rate you are going to need to set the period register to 446 (do the math).

Now, the nice difference between the WSG and other PCM/ADPCM playback devices is that you can change the playback frequency anyway you like, to the point you can playback any sound using musical scale, just by changing the period register (which is 12 bits btw). So you can sample a nice Ahhhhh for example and use it as an instrument.

Period register = 3579545/(8000*

Edited by opcode
Link to comment
Share on other sites

I think I have most of the lower channels wave generator done, so I can already start simulating.

Next I need to do the wave memory access for those channels.

Quick general question: How does one go about creating sound data compatible with your FPGA sound solution? Will it require custom data encoding of some sort? Just curious.

That depends. For the "wavetable lite" portion (those 32 bytes waveforms), you can create that manually. Waveforms are signed (two's complement) bytes, which means, 0 is no amplitude, 1 to 7Fh results in an increasingly higher amplitude, -1 to -128 (FFh to 80h) results in an increasingly higher negative amplitude. That is the same as the SCC, so you can use the large number of waves already available for it. Namco used a simpler model, 4 bits unsigned. The PC-Engine used 5-bits. So they are both subsets.

 

For the larger waves, you can use any tool that gives you 8-bit signed PCM. To calculate the playback frequency, do this (though I will discuss that in detail later):

 

Period (12 bit value you load in the period register) = (3579545/sampling_frequency) - 1

 

So for example, suppose you sampled something at 8kHz. In order to playback it at the same rate you are going to need to set the period register to 446 (do the math).

Now, the nice difference between the WSG and other PCM/ADPCM playback devices is that you can change the playback frequency anyway you like, to the point you can playback any sound using musical scale, just by changing the period register (which is 12 bits btw). So you can sample a nice Ahhhhh for example and use it as an instrument.

Period register = 3579545/(8000*

Okay, I'm going to pretend I understand all that ( :ponder: ) and just assume that you can use the sound data from MSX Gradius/Salamander/etc. as-is, without any adjustment or modification. :)

Link to comment
Share on other sites

Okay, I'm going to pretend I understand all that ( :ponder: ) and just assume that you can use the sound data from MSX Gradius/Salamander/etc. as-is, without any adjustment or modification. :)

 

Not really. If we are going to do something from scratch, better do it right... right? ;)

The WSG has a few differences. We don't have a PSG like the MSX, but we don't need one anyways. We can simulate square waves with the WSG if necessary. We can also replace the PSG drums with sampled drums. And the WSG has a few features the SCC doesn't have, like panning (yes, it is stereo).

So we could use some of the MSX data, like the frequency table for notes, but some will need to change... at least if you want to really take the WSG to its maximum.

Link to comment
Share on other sites

So we could use some of the MSX data, like the frequency table for notes, but some will need to change... at least if you want to really take the WSG to its maximum.

Okay, how about NES sound data? I figure you'd need some kind of software driver...?

Link to comment
Share on other sites

So we could use some of the MSX data, like the frequency table for notes, but some will need to change... at least if you want to really take the WSG to its maximum.

Okay, how about NES sound data? I figure you'd need some kind of software driver...?

 

It can recreate all the NES waveforms, however it doesn't offer sweep for example, so you would need to emulate that by software.

Link to comment
Share on other sites

I feel immensely frustrated and nostalgic today.... :sad:

So many games awaiting, so little time, this f***** module never gets done... I will probably be the happiest of men the day this thing gets behind me, because this s*** is just clogging the pipeline...

Link to comment
Share on other sites

I feel immensely frustrated and nostalgic today.... :sad:

So many games awaiting, so little time, this f***** module never gets done... I will probably be the happiest of men the day this thing gets behind me, because this s*** is just clogging the pipeline...

Having problems with the FPGA component...?

Link to comment
Share on other sites

I feel immensely frustrated and nostalgic today.... :sad:

So many games awaiting, so little time, this f***** module never gets done... I will probably be the happiest of men the day this thing gets behind me, because this s*** is just clogging the pipeline...

 

 

Think of how amazing you will feel when you are done! The more frustration the bigger the excitment when finished!

 

I wish I could have gone to AdamCon to see your current beta release that Jim showed that would have been awesome.

Link to comment
Share on other sites

I feel immensely frustrated and nostalgic today.... :sad:

So many games awaiting, so little time, this f***** module never gets done... I will probably be the happiest of men the day this thing gets behind me, because this s*** is just clogging the pipeline...

Having problems with the FPGA component...?

 

Not really, just wishing I was working on games right now...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

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...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...